30 lines
1.3 KiB
Ruby
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
|