2012-04-13 13 views
0

私は@user変数を持っている、と私はリソーステーブルを持っている、そして私は単にのuser_idであると明らかにアクティブレコードを使用して、これらのレコードをレール上の関連付けを介して取得するにはどうすればよいですか?

@user.resources.each作品

@user.favorites.first.resourceをRESOURCE_ID私はすべてのリソースを必要除き、正常に動作しますお気に入りのテーブルを持っています。

@user.favorites.resources動作しません

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

モデルを投稿できますか?具体的には、お気に入りとリソースの間に 'has_many'関係があるかどうか、および/またはお気に入りを介してリソースにユーザを接続する' has_many:through'があります。 – rjz

+0

があなたのために追加されました – Tallboy

+0

私が理解していることを確かめるために、ユーザーは多くのリソースを持っていますが、それらのリソースのいくつかはお気に入りです。その場合、あなたが本当に言っていることは、ユーザーがhas_many:favorite_resourcesからfavoritesまでということです。それを明示的に定義した場合は、@ user.favorite_resources ... –

答えて

2

してみてください。

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

これは、すべてのユーザーのお気に入りからリソースを積極的に読み込む必要があります。その結果、collectはそれらをArrayとして返す必要があります。

+0

それは素晴らしい仕事でした。それは行われるべきであるが、より従来の方法はありますか? – Tallboy

+0

私はそれが最も一般的なルビーの方法だと思います;-) –

関連する問題