2016-09-08 18 views
0

的集合我有兩個型號Rails的ActiveRecord的收集得到

User has_many :events 
Event has_many :advertisements 

現在我只是想顯示用戶的所有廣告。

我想:

@user.events.joins(:advertisements).all 
@user.events.advertisements.all 
@user.events.all.advertisements.all 

和其他各種組合,但我可能會得到一些錯誤這裏畢竟。

回答

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 }) 
0

你應該建立這樣的

user.rb

has_many :events,dependent: :destroy 
has_many :advertisements, through: :events 

事件之間的關係.rb

has_many :advertisments,dependent: :destroy 
belongs_to :user 

advertisement.rb

belongs_to :event 

現在你可以直接訪問廣告。

User.find(1).advertisements