0

以下问题:
我有一个产品的 ID 和两个用于选项值的 IDS。我想查找与产品 ID 和两个选项值 ID 匹配的变体。举个例子:

我有一个名为“Tshirt”的产品,我想要的是蓝色和大号的。

我的以下设置是:

产品.rb

class Product < ActiveRecord::Base
  has_many :variants
end 

变体.rb

class Variant < ActiveRecord::Base
  belongs_to :product
  has_and_belongs_to_many :option_values, :join_table => :spree_option_values_variants
end

option_values.rb

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 => {:id => [color.id, size.id]}, :product_id => product.id)

这个艰难的让我回到了所有的变体,无论是大的还是蓝色的。我很坚强,我想要大而蓝色的变体。

4

1 回答 1

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
于 2013-04-12T21:52:12.290 回答