我有两个型号
User has_many :events
Event has_many :advertisements
现在我只想显示用户的所有广告。
我试过了:
@user.events.joins(:advertisements).all
@user.events.advertisements.all
@user.events.all.advertisements.all
以及其他各种组合,但毕竟我可能会遇到问题。
答案 0 :(得分:3)
你可以使用很多来获取rails来为你做连接。
class User
has_many :events
has_many :advertisements, through: :events
end
user = User.first
user_ads = user.advertisements
如果您不想这样做,尽管可以这样做
user = User.first
ads = Advertisement.joins(:event).where(events: { user_id: user.id })
答案 1 :(得分:0)
你应该像这样建立他们之间的关系
user.rb
has_many :events,dependent: :destroy
has_many :advertisements, through: :events
event.rb
has_many :advertisments,dependent: :destroy
belongs_to :user
advertisement.rb
belongs_to :event
现在您可以直接访问广告。
User.find(1).advertisements