class Dhatu::Price < Dhatu::ApplicationRecord # Set Table Name self.table_name = "prices" # Including the State Machine Methods include Publishable include Featureable # Validations validate_string :title, mandatory: true, min_length: 2, format: /.*/i validate_string :sub_title, mandatory: false, format: /.*/i validates :price, presence: true validates :category, presence: true # Associations belongs_to :category has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage" # ------------------ # Class Methods # ------------------ scope :search, lambda {|query| where("LOWER(title) LIKE LOWER('%#{query}%') OR\ LOWER(sub_title) LIKE LOWER('%#{query}%') OR") } scope :filter_by_category, lambda { |c| where("category_id = ?", (c.is_a? Dhatu::Category ? c.id : c)) } scope :upcoming, lambda { where("created_at >= ?", Time.now) } scope :past, lambda { where("created_at < ?", Time.now) } # ------------------ # Instance variables # ------------------ # Generic Methods # --------------- def to_param "#{id}-#{title.parameterize[0..32]}" end def display_name "#{title_was}" end # Permission Methods # ------------------ def can_be_edited? status?(:published) or status?(:unpublished) end def can_be_deleted? status?(:removed) end end