我的产品有很多变体,这些变体有两个属性:尺寸和颜色。
我想根据我传入的两个属性查询 Variant - 我让它与以下内容一起工作:
variants = Spree::Variant.joins(:option_values).where(:spree_option_values => {:id => size.id}, :product_id => prod.id).joins(:option_values)
variant = variants.select{|v| v.option_values.include?(size)}
据我了解, select 方法或多或少会遍历数组,这有点慢。我宁愿有一个直接根据这两个属性找到变体的查询。
我尝试了以下方法:
Spree::Variant.joins(:option_values).where(:spree_option_values => {:id => size.id}, :product_id => prod.id).joins(:option_values).where(:spree_option_values => {:id => color.id})
但这最终只返回了一个空数组。
我该怎么办?
编辑:这是产品、变体和 option_values 模型:
产品: https ://github.com/spree/spree/blob/master/core/app/models/spree/product.rb
变体: https ://github.com/spree/spree/blob/master/core/app/models/spree/variant.rb
OptionValue:https ://github.com/spree/spree/blob/master/core/app/models/spree/option_value.rb OptionType:https ://github.com/spree/spree/blob/master/core/app /models/spree/option_type.rb