Похоже, это не такая уж редкая проблема, но я не смог найти хорошего решения. Общая информация:
- Продукт, который имеет множество вариантов
- 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
И проверьте, какая переменная у меня есть или преобразует первую, чтобы она выглядела так же, как вторая - грязная ... Есть ли лучшее решение? Спасибо за любые предложения.