Class: PromoBlock

Inherits:
ApplicationRecord show all
Includes:
Checkable, RequiredUniqueSlug, Toggleable
Defined in:
app/models/promo_block.rb

Constant Summary collapse

DESCRIPTION_LIMIT =
250
NAME_LIMIT =
50
SLUG_LIMIT =
50
SLUG_PATTERN =
/\A[a-z0-9][-_a-z0-9]*[a-z0-9]\z/.freeze
SLUG_PATTERN_HTML =
'^[a-zA-Z0-9][-_a-zA-Z0-9]*[a-zA-Z0-9]$'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.entity_parametersObject



36
37
38
# File 'app/models/promo_block.rb', line 36

def self.entity_parameters
  %i[description language_id name slug visible]
end

.localized_block(slug, language_code) ⇒ Object

Parameters:

  • slug (String)
  • language_code (String)


30
31
32
33
34
# File 'app/models/promo_block.rb', line 30

def self.localized_block(slug, language_code)
  language = Language.find_by(code: language_code)
  criteria = { visible: true, slug: slug }
  find_by(criteria.merge(language: language)) || find_by(criteria)
end

Instance Method Details

#editable_by?(user) ⇒ Boolean

Parameters:

  • user (User)

Returns:

  • (Boolean)


41
42
43
# File 'app/models/promo_block.rb', line 41

def editable_by?(user)
  UserPrivilege.user_has_privilege?(user, :promo_manager)
end

#item_for_visitorsPromoItem

Returns:



46
47
48
# File 'app/models/promo_block.rb', line 46

def item_for_visitors
  promo_items.list_for_visitors.order('random()').first
end