Sha256: b1e688280255121912a71912acc672da8bd0d46d2fdbb03d5400b1128a39984c
Contents?: true
Size: 1.08 KB
Versions: 2
Compression:
Stored size: 1.08 KB
Contents
Spree::Product.class_eval do has_and_belongs_to_many :parts, :class_name => "Spree::Variant", :join_table => "spree_assemblies_parts", :foreign_key => "assembly_id", :association_foreign_key => "part_id" has_many :assemblies_parts, :class_name => "Spree::AssembliesPart", :foreign_key => "assembly_id" scope :individual_saled, -> { where(individual_sale: true) } scope :search_can_be_part, ->(query){ not_deleted.available.joins(:master) .where(arel_table["name"].matches("%#{query}%").or(Spree::Variant.arel_table["sku"].matches("%#{query}%"))) .where(can_be_part: true) .limit(30) } validate :assembly_cannot_be_part, :if => :assembly? def assembly? parts.present? end def count_of(variant) ap = assemblies_part(variant) # This checks persisted because the default count is 1 ap.persisted? ? ap.count : 0 end def assembly_cannot_be_part errors.add(:can_be_part, Spree.t(:assembly_cannot_be_part)) if can_be_part end private def assemblies_part(variant) Spree::AssembliesPart.get(self.id, variant.id) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
solidus_product_bundle-1.0.1 | app/models/spree/product_decorator.rb |
solidus_product_bundle-1.0.0 | app/models/spree/product_decorator.rb |