1

アプリケーションに次の関連付けがあります。

# user.rb
has_many :posts, :dependent => :destroy
has_many :likes, :dependent => :destroy

# post.rb
belongs_to :user
has_many :likes, :dependent => :destroy


# like.rb
belongs_to :user
belongs_to :post

ユーザーが気に入ったすべての投稿にアクセスしようとすると、次のループを使用しています

@user = User.find(params[:id])
@posts_user_likes = []
@user.likes.each do |like| # TODO optimize
  @posts_user_likes << Post.find_by_id(like.post_id)
end

しかし、それは非常に非効率的です。

別の関連付けまたは別のループ方法を使用して、コードを改善する最良の方法は何ですか?

4

1 に答える 1

5

に追加has_many :liked_posts, :through => :likes, :class_name => 'Post'Userて呼び出します User.find(params[:id]).liked_posts

于 2012-01-30T23:12:19.560 に答える