我正在尝试根据两个关联属性查找记录。如果该记录的关联包含这两条记录,则应选择该记录。
到目前为止,我尝试遵循 - 在我看来这是一种非常糟糕的做法,我想避免使用它。
@size = Spree::OptionValue.find(params[:size])
@color = Spree::OptionValue.find(params[:color])
vari = Spree::Variant.all
vari.each do |va|
if va.option_values.include?(@size && @color)
@variant = va
end
end
到目前为止,我也尝试过
@variant = Spree::Variant.all(:include => :option_values, :conditions => ['option_value.id = ?', params[:color])
这似乎是要走的路,但我似乎无法找出获得结果的正确方法。我不断收到的返回错误如下:
ActiveRecord::StatementInvalid: PG::Error: ERROR: missing FROM-clause entry for table "option_values" LINE 1: ..._option_values_variants"."option_value_id" WHERE (option_val...
编辑:
由于接受的答案提供了很大的帮助,我得到了它的工作:
Spree::Variant.joins(:option_values).where("spree_option_values.id in (?)", [size, color])