2012-04-13 11 views
0

Ich habe den @user Variable, und ich habe Ressourcen Tisch, und dann habe ich eine Favoriten-Tabelle, die lediglich user_id und RESOURCE_IDWie verwende ich Active Record, um diese Datensätze über die Verknüpfungen in Rails zu erhalten?

@user.resources.each Werke offenbar

@user.favorites.first.resource funktioniert gut, außer ich alle Ressourcen will .

@user.favorites.resources funktioniert nicht

resource.rb

belongs_to :category 
    belongs_to :user 
    has_many :favorites 
    has_many :resource_tags 
    has_many :tags, :through => :resource_tags 

user.rb

has_many :resources 
    has_many :favorites 

favorite.rb

belongs_to :resource 
    belongs_to :user 
+0

Können Sie Ihre Modelle veröffentlichen? Insbesondere suchen Sie nach einer 'has_many'-Beziehung zwischen Favoriten und Ressourcen und/oder einem' has_many: through', indem Sie Benutzer über Favoriten mit Ressourcen verbinden. – rjz

+0

oben für Sie hinzugefügt – Tallboy

+0

Um sicherzustellen, dass ich verstehe, hat ein Benutzer viele Ressourcen, aber einige dieser Ressourcen sind ihre Favoriten, die über die Favoriten-Tabelle definiert ist. Wenn das der Fall ist, wenn Sie wirklich sagen, dass ein Benutzer has_many: favorite_resources über Favoriten hat. Wenn Sie das explizit definieren, müssen Sie nur @ user.favorite_resources aufrufen ... –

Antwort

2

Versuchen:

@user.favorites.includes(:resource).collect(&:resource) 

Das sollte eifrig laden Sie die Ressource aus allen Favoriten des Benutzers und dann die Sammlung sollte sie als ein Array zurückgeben.

+0

Das hat super funktioniert. Gibt es einen konventionelleren Weg, der getan werden sollte? – Tallboy

+0

Ich denke, das ist der konventionellste Rubinweg ;-) –

Verwandte Themen