Rails 5-访问除关联表中的外键以外的其他列

时间:2019-01-14 20:21:15

标签: ruby-on-rails ruby ruby-on-rails-5

我有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 /品牌/颜色
  • 卖家:ID /名称/国家/地区
  • 库存:id / sneaker_id / seller_id / old_price / price / offer_link

我认为,我尝试显示一个运动鞋的卖家和他们的清单(运动鞋的ID以params [:id]表示)

在我的控制者中,我有这个:

@sellers = Seller.joins(:stocks).where(stocks: { sneaker_id: params[:id] })

但是我只能访问stocks表中的外键(sneaker_id),并且我想访问其他列(old_price,price,offer_link)。

我找不到如何编写适当的查询的方法……(也许加入不是一种好方法?)

1 个答案:

答案 0 :(得分:2)

在Rails中,joins仅用于过滤,而不用于访问关联的记录。要在结果中包括相关记录,请使用includes

@sellers = Seller.includes(:stocks).where(stocks: { sneaker_id: params[:id] })

然后,您可以使用惯用的方法访问股票。

@sellers.first.stocks.first.old_price

This articleincludes提供了一些有用的细节和性能注意事项。