Module: SpreeCmCommissioner::RoleDecorator

Defined in:
app/models/spree_cm_commissioner/role_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/models/spree_cm_commissioner/role_decorator.rb', line 3

def self.prepended(base)
  base.has_many :role_permissions, class_name: 'SpreeCmCommissioner::RolePermission'
  base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission'

  base.belongs_to :vendor, optional: true

  base.scope :non_vendor, -> { where(vendor_id: nil) }
  base.scope :filter_by_vendor, lambda { |vendor|
    where(vendor_id: vendor)
  }

  base.accepts_nested_attributes_for :role_permissions, allow_destroy: true

  base.before_validation :generate_unique_name, if: -> { vendor_id.present? }

  base.validates :presentation, uniqueness: { scope: :vendor_id }, presence: true, if: -> { vendor_id.present? }
end

Instance Method Details

#generate_unique_nameObject



21
22
23
24
25
26
# File 'app/models/spree_cm_commissioner/role_decorator.rb', line 21

def generate_unique_name
  return if name.present?
  return if presentation.blank?

  self.name = "#{vendor.slug}-#{presentation.downcase.parameterize(separator: '-')}"
end