Я пытаюсь найти запись на основе двух связанных атрибутов. Запись должна быть выбрана, если ее ассоциация содержит эти две записи.
До сих пор я пытался следовать - что мне показалось очень плохой практикой, и я хочу избежать ее использования.
@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: отсутствует запись предложения FROM для таблицы "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])
option_values.id
, как ассоциацию. - person numbers1311407   schedule 07.11.2012