我想实现以下查询,但是遇到一些麻烦。
这里是关系。
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
。* FROMcomments
在哪里 (product.product_infos.name,例如“%Search_term%”)。ORDER BYcomments
。id
DESC LIMIT 20偏移量0
我想念什么?
答案 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