2016-09-08 2 views
0

Ich habe zwei ModelleRails Active Sammlung von Sammlung bekommen

User has_many :events 
Event has_many :advertisements 

Jetzt einfach Ich möchte Zeige alle Anzeigen eines Benutzers.

Ich habe versucht:

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

und verschiedene andere Kombinationen, aber ich kann doch etwas nicht in Ordnung hier.

Antwort

3

Sie können viele verwenden, um Schienen zu erhalten, um die Verknüpfungen für Sie zu tun.

class User 
    has_many :events 
    has_many :advertisements, through: :events 
end 

user = User.first 
user_ads = user.advertisements 

Wenn Sie nicht wollen, zu tun, dass, obwohl Sie

user = User.first 
ads = Advertisement.joins(:event).where(events: { user_id: user.id }) 
0

tun können Sie Beziehung zwischen ihnen wie dieser

user.rb

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

Veranstaltung etablieren sollte .rb

has_many :advertisments,dependent: :destroy 
belongs_to :user 

advertisement.rb

belongs_to :event 

jetzt können Sie Werbung direkt zugreifen.

User.find(1).advertisements 
Verwandte Themen