aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/public_body_category.rb13
-rw-r--r--app/models/public_body_category_link.rb19
-rw-r--r--app/models/public_body_heading.rb16
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