Rails 2.3:产品has_many变种 - 如何在Variant的条件下查找产品?

时间:2011-07-15 08:49:21

标签: ruby-on-rails ruby has-many

这看起来不是那么罕见的问题,但我找不到一个好的解决方案。一般信息:

  • has_many Variants
  • 的产品
  • 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 :(得分:0)

您可以在条件中添加子句并执行此操作:

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