我有3个型号:
class Sneaker < ApplicationRecord
has_many :stocks
has_many :sellers, through: :stocks
end
class Seller < ApplicationRecord
has_many :stocks
has_many :sneakers, through: :stocks
end
class Stock < ApplicationRecord
belongs_to :sneaker
belongs_to :seller
end
我有3张桌子:
我认为,我尝试显示一个运动鞋的卖家和他们的清单(运动鞋的ID以params [:id]表示)
在我的控制者中,我有这个:
@sellers = Seller.joins(:stocks).where(stocks: { sneaker_id: params[:id] })
但是我只能访问stocks表中的外键(sneaker_id),并且我想访问其他列(old_price,price,offer_link)。
我找不到如何编写适当的查询的方法……(也许加入不是一种好方法?)
答案 0 :(得分:2)
在Rails中,joins
仅用于过滤,而不用于访问关联的记录。要在结果中包括相关记录,请使用includes
。
@sellers = Seller.includes(:stocks).where(stocks: { sneaker_id: params[:id] })
然后,您可以使用惯用的方法访问股票。
@sellers.first.stocks.first.old_price
This article为includes
提供了一些有用的细节和性能注意事项。