以下问题:
我有一个产品的ID和两个IDS for Option Values。我想查找与产品ID和两个选项值ID匹配的Variant。
所以对于一个例子:
我有一个名为“Tshirt”的产品,我想要的产品是Blue和Large。
我的以下设置是:
class Product < ActiveRecord::Base
has_many :variants
end
class Variant < ActiveRecord::Base
belongs_to :product
has_and_belongs_to_many :option_values, :join_table => :spree_option_values_variants
end
class OptionValue < ActiveRecord::Base
has_and_belongs_to_many :variants, :join_table => 'spree_option_values_variants', :class_name => "Spree::Variant"
end
现在,我有:
以上面的例子为例:
Spree :: Variant.includes(:option_values).where(:spree_option_values =&gt; {:id =&gt; [color.id,size.id]},:product_id =&gt; product.id)
这很难让我回到所有大或蓝的变体。我很难,我想要大而蓝的Variant。
答案 0 :(得分:0)
我想我找到了答案,它在2个查询中解决了这个问题:
(Spree::Variant.joins(:option_values).where(:spree_option_values => {:id => color.id}, :product_id => self.id) & Spree::Variant.includes(:option_values).where(:spree_option_values => {:id => size.id}, :product_id => self.id)).last