diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/public_body_category.rb | 13 | ||||
-rw-r--r-- | app/models/public_body_category_link.rb | 19 | ||||
-rw-r--r-- | app/models/public_body_heading.rb | 16 |
3 files changed, 34 insertions, 14 deletions
diff --git a/app/models/public_body_category.rb b/app/models/public_body_category.rb index 0c5142cfd..e78b91733 100644 --- a/app/models/public_body_category.rb +++ b/app/models/public_body_category.rb @@ -118,22 +118,9 @@ class PublicBodyCategory < ActiveRecord::Base # we already have this, stop return end - - # find the last display_order for this heading - last_link = PublicBodyCategoryLink.where( - :public_body_heading_id => heading.id - ).order(:category_display_order).last - - if last_link - display_order = last_link.category_display_order + 1 - else - display_order = 1 - end - heading_link = PublicBodyCategoryLink.create( :public_body_category_id => self.id, :public_body_heading_id => heading.id, - :category_display_order => display_order ) end diff --git a/app/models/public_body_category_link.rb b/app/models/public_body_category_link.rb index bd4fe541a..e5a0d7f25 100644 --- a/app/models/public_body_category_link.rb +++ b/app/models/public_body_category_link.rb @@ -12,4 +12,21 @@ class PublicBodyCategoryLink < ActiveRecord::Base belongs_to :public_body_category belongs_to :public_body_heading -end
\ No newline at end of file + validates :category_display_order, :numericality => { :only_integer => true, + :message => N_('Display order must be a number') } + + before_validation :on => :create do + unless self.category_display_order + self.category_display_order = PublicBodyCategoryLink.next_display_order(self.public_body_heading_id) + end + end + + def PublicBodyCategoryLink.next_display_order(heading_id) + if last = where(:public_body_heading_id => heading_id).order(:category_display_order).last + last.category_display_order + 1 + else + 0 + end + end + +end diff --git a/app/models/public_body_heading.rb b/app/models/public_body_heading.rb index 62e7d8e91..e675162f8 100644 --- a/app/models/public_body_heading.rb +++ b/app/models/public_body_heading.rb @@ -18,6 +18,14 @@ class PublicBodyHeading < ActiveRecord::Base validates_uniqueness_of :name, :message => N_('Name is already taken') validates_presence_of :name, :message => N_('Name can\'t be blank') + validates :display_order, :numericality => { :only_integer => true, + :message => N_('Display order must be a number') } + + before_validation :on => :create do + unless self.display_order + self.display_order = PublicBodyHeading.next_display_order + end + end # Convenience methods for creating/editing translations via forms def find_translation_by_locale(locale) @@ -49,4 +57,12 @@ class PublicBodyHeading < ActiveRecord::Base end end end + + def PublicBodyHeading.next_display_order + if max = maximum(:display_order) + max + 1 + else + 0 + end + end end |