在我的基于Postgresql的Rails应用程序中,我试图限制我的Web应用程序中的数据库查询和一般迭代,我正在寻找一种方法在一个查询中执行此操作。
关联: - 产品has_and_belongs_to_many类别
我想要做的是找到与所有类别相关的所有产品,而这些产品又包含在我的主要产品中。例如。我有
@blue_car
@blue_car.categories #=> "blue, car"
Category.find(blue).products #=> "Blue car, Blue boat"
Category.find(car).products #=> "Blue car, Green car"
所以我想从@blue_car得到的结果是“蓝色车,蓝色船,蓝色车,绿色车”。
我今天做了一次迭代:
product_list = []
Product.categories.each do |product|
product_list << product.categories
end
相反,我想在一个查询中解决这个问题,应该可以使用正确的连接类型,对吧?
像这样(不起作用):product_list = @blue_car.categories.products
我不知道它是否使它复杂但我做了一些过滤,所以最终的查询必须更像
product_list = @blue_car.categories.where(:category_foo => "bar").products.where(:product_stuff => "things")
任何优雅的建议?
答案 0 :(得分:1)
根据你所说的,这样的东西应该有效。
[13, 14]
答案 1 :(得分:1)
您可以尝试以下方法吗?
Product.includes(:categories).where(categories: { name: @blur_car.categories } )