查询通过关联从has_many中检索对象

时间:2019-03-06 10:09:28

标签: ruby-on-rails

我有3种型号:

Product
has_many :variants, dependent: :destroy
has_many :stocks,   through: :variants

Stock
belongs_to :variant

Variant 
has_many :stocks, dependent: :destroy
belongs_to :product

在我的股票指数中,我需要按产品的:title

进行过滤

这是我的尝试

@stocks = Stock.joins(:variant)
  .joins("INNER JOIN 'products' ON 'variants'.'id' =\'variants'.'product_id'")
  .where('lower(variants.product.title) LIKE ?', "%#{params[:query][:keyword].downcase }%")

我有这个错误,但是我没弄错是什么

  

PG :: SyntaxError:错误:“产品”附近或附近的语法错误   第1行:... variants“。” id“ =”股票“。” variant_id“ INNER JOIN'产品'...

1 个答案:

答案 0 :(得分:1)

您可以使用AR语法加入产品

@stocks = Stock.joins(variant: :product)
  .where('lower(products.title) LIKE ?', "%#{params[:query][:keyword].downcase }%")