Files
old-ribica/front-api/models/item.rb
2015-10-01 15:48:32 +02:00

30 lines
1.3 KiB
Ruby

class Item < ActiveRecord::Base
belongs_to :unit
belongs_to :brand
has_many :multi_media_descriptions
belongs_to :sub_category
has_many :item_in_groups
has_many :item_groups, through: :item_in_groups
attr_accessor :count # used for cart
def attributes
super.merge('count' => self.count)
end
# TODO: change "best selling" algorithm when get some data - currently it's only sorted by earnings
scope :best_selling, -> (offset, limit) { where(:on_display => true).order("list_price ASC").limit(limit).offset(offset) }
scope :best_selling_in_sub_category, -> (sub_category_id, offset, limit) { best_selling(offset, limit).where(sub_category_id: sub_category_id) }
scope :best_selling_in_category, -> (category_id, offset, limit) { best_selling(offset, limit).joins( sub_category: [:category] ).where(["category_id = ?", category_id]) }
scope :best_selling_in_section, -> (section_id, offset, limit) { best_selling(offset, limit).joins( sub_category: [category: [ :section ]] ).where( ["section_id = ?", section_id] ) }
scope :all_in_category, -> (category_id) { where(on_display: true).joins( sub_category: [:category]).where(["category_id = ?", category_id]) }
scope :all_in_sub_category, -> (sub_category_id) { where(on_display: true).where(["sub_category_id = ?", sub_category_id]) }
end