Class: LinkBlockItem
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- LinkBlockItem
- Includes:
- Checkable, Toggleable
- Defined in:
- app/models/link_block_item.rb
Constant Summary collapse
- BUTTON_TEXT_LIMIT =
50
- META_LIMIT =
255
- PRIORITY_RANGE =
(1..32767)
- SLUG_LIMIT =
50
- SLUG_PATTERN =
/\A[a-z][-_a-z0-9]*[a-z]\z/i
- SLUG_PATTERN_HTML =
'^[a-zA-Z][-_a-zA_Z0-9]*[a-zA-Z]$'
- TITLE_LIMIT =
255
- TEXT_LIMIT =
5000
- URL_LIMIT =
255
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.creation_parameters ⇒ Object
44 45 46 |
# File 'app/models/link_block_item.rb', line 44 def self.creation_parameters entity_parameters + %i(link_block_id) end |
.entity_parameters ⇒ Object
40 41 42 |
# File 'app/models/link_block_item.rb', line 40 def self.entity_parameters %i(body button_text button_url image image_alt_text priority slug title visible) end |
Instance Method Details
#change_priority(delta) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/models/link_block_item.rb', line 57 def change_priority(delta) new_priority = priority + delta criteria = { priority: new_priority } adjacent = self.class.siblings(link_block_id).find_by(criteria) if adjacent.is_a?(self.class) && (adjacent.id != id) adjacent.update!(priority: priority) end update(priority: new_priority) self.class.siblings(link_block_id).ordered_by_priority.map { |e| [e.id, e.priority] }.to_h end |
#text_for_link ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/models/link_block_item.rb', line 48 def text_for_link if title.blank? slug.blank? ? "#{link_block.slug}-#{priority}" : slug else title end end |