You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

49 lines
1.2 KiB

class Attachment < ApplicationRecord
extend Mobility
translates :body, :url, locale_accessors: I18n.available_locales
ALIGNMENT_TILE = %w"N NE E SE S SW W NW"
ALIGNMENT_SITE = %w"E W"
TEMPLATE_SITE_ASSET = %w"Hero L"
belongs_to :attachable_for, polymorphic: true, optional: true
belongs_to :asset, optional: true
store_accessor :props, :fg_color, :bg_color, :alignment, :template
acts_as_list scope: [:attachable_for_id, :attachable_for_type]
scope :ordered, -> { order(position: :asc) }
scope :favorites, -> { where(is_favorite: true) }
scope :favorites_first, -> { reorder("(is_favorite = TRUE) DESC, position ASC") }
scope :portraits_first, -> { reorder(Arel.sql("(props ->> 'is_portrait' = '1') DESC, position ASC")) }
scope :not_portraits, -> { where("(props ->> 'is_portrait' IS NULL OR props ->> 'is_portrait' != '1')") }
def is_large?
self.is_large.to_i == 1
end
def is_portrait?
self.is_portrait.to_i == 1
end
def template_subclass
return 'na' if self.template.blank?
self.template.downcase
end
def alignment_subclass
return 'na' if self.alignment.blank?
self.alignment.downcase
end
end