0

著者に多くの投稿があり、投稿に多くのコメントがあるとします。特定の著者の特定のいくつかの投稿のコメントをすべて選択するにはどうすればよいですか?

ユースケース:「rails」というタグが付いた著者の投稿の最近のコメントをすべて欲しい

@author = Author.find(params[:author_id])
@posts = @author.posts.where(:tag => 'rails')

@comments = @posts.?????.where(:created_at.gte = 1.month.ago)
4

1 に答える 1

2

これを行う方法はありません@posts.?????

投稿IDを取得し、コメントを選択する必要があります

post_ids = @author.posts.where(:tag => 'rails').map(&:id)
# In rails >= 3.2.1 you can use pluck(:id) instead of map(&:id)

@comments = Comment.where(:post_id => post_ids, :created_at.gte = 1.month.ago)

upd:または

@posts = @author.posts.where(:tag => 'rails')
@comments = Comment.where(:post_id => @posts.map(&:id), :created_at.gte = 1.month.ago)
于 2012-12-23T07:53:26.023 に答える