Merge pull request #1721 from consul/feature/add_slugs_to_budget_related

Add slugs to budget related
This commit is contained in:
BertoCQ
2017-07-05 13:16:24 +02:00
committed by GitHub
11 changed files with 126 additions and 5 deletions

View File

@@ -1,13 +1,15 @@
class Budget < ActiveRecord::Base
include Measurable
include Sluggable
PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze
CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze
validates :name, presence: true
validates :name, presence: true, uniqueness: true
validates :phase, inclusion: { in: PHASES }
validates :currency_symbol, presence: true
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
has_many :investments, dependent: :destroy
has_many :ballots, dependent: :destroy

View File

@@ -1,10 +1,14 @@
class Budget
class Group < ActiveRecord::Base
include Sluggable
belongs_to :budget
has_many :headings, dependent: :destroy
validates :budget_id, presence: true
validates :name, presence: true
validates :name, presence: true, uniqueness: { scope: :budget }
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
end
end
end

View File

@@ -1,12 +1,15 @@
class Budget
class Heading < ActiveRecord::Base
include Sluggable
belongs_to :group
has_many :investments
validates :group_id, presence: true
validates :name, presence: true
validates :name, presence: true, uniqueness: { if: :name_exists_in_budget_headings }
validates :price, presence: true
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
delegate :budget, :budget_id, to: :group, allow_nil: true
@@ -16,5 +19,9 @@ class Budget
"#{group.name}: #{name}"
end
def name_exists_in_budget_headings
group.budget.headings.where(name: name).any?
end
end
end

View File

@@ -0,0 +1,11 @@
module Sluggable
extend ActiveSupport::Concern
included do
before_validation :generate_slug
end
def generate_slug
self.slug = name.to_s.parameterize
end
end