Rails 2.3: Product has_many Варианты - как найти на Product условия с Вариантом? - PullRequest
0 голосов
/ 15 июля 2011

Похоже, это не такая уж редкая проблема, но я не смог найти хорошего решения. Общая информация:

  • Продукт, который имеет множество вариантов
  • product.variants также необходимы, поэтому они включены

Когда у меня есть условия для самого Продукта, я выполняю (named_scopes используются нормально, но это не требуется для иллюстрации проблемы):

Product.all(:conditions => {...}, :include => :variants)

Я не могу выяснить, каков наилучший способ поиска только продуктов, которые имеют варианты, которые соответствуют условиям и включают только те. Моя последняя идея была:

Variant.all(:conditions => {...}, :include => :product).group_by(&:product)

Но это не очень удобно и не похоже на красивый рубиновый стиль. Вместо:

@products.each do |p|
 do_stuff_with(p)
 do_other_stuff_with(p.variants)
end

Я должен был бы сделать

@products.each do |p|
 do_stuff_with(p[0])
 do_other_stuff_with(p[1])
end

И проверьте, какая переменная у меня есть или преобразует первую, чтобы она выглядела так же, как вторая - грязная ... Есть ли лучшее решение? Спасибо за любые предложения.

1 Ответ

0 голосов
/ 15 июля 2011

Вы можете добавить условие к условиям и сделать это:

Product.all(:conditions => "variants.id is not null", :include => :variants)
...