Rails包含与条件的多个关联

时间:2018-07-15 09:47:27

标签: ruby-on-rails

我想实现以下查询,但是遇到一些麻烦。

这里是关系。

Comment belongs_to Product
Product has_many Product_infos

下面是我要实现的目标,

@comments = Comment.order(id: :desc)
                   .includes([product: :product_infos])
                   .where('product.product_infos.name like ?', "%#{params[:search]}%")

但是它抛出了这个错误

  

Mysql2 :: Error:“ where”中的未知列“ product.product_infos.name”   子句':SELECT comments。* FROM comments在哪里   (product.product_infos.name,例如“%Search_term%”)。ORDER BY   commentsid DESC LIMIT 20偏移量0

我想念什么?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。 尝试添加.references(:product_infos)

Comment
  .order(id: :desc).includes([product: :product_infos])
  .where('product_infos.name like ?', "%#{params[:search]}%")
  .references(:product_infos)
  .inspect

请参阅API:http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-references

当您需要使用更简单的条件时,可以使用以下语法:

Comment
  .includes([product: :product_infos])
  .where(product_infos: {name: "another info on product one"})
  .inspect