我正在尝试抓取帖子,只根据条件获取属于该帖子的评论:
即
# Grab all posts but only include comments that have been approved.
Post.all(:include => :comments, :conditions => ['comments.approved = ?', true])
2011年7月20日更新时间:美国东部时间10月11日
为了澄清,我试图抓住所有帖子,只抓住特定用户对该帖子的评论。
def grab_posts_and_only_comments_from(user)
{:include => [:comments], :conditions => ['comments.user_id = ?', user.id]}
end
2011年7月20日更新美国东部时间11:34
在已检查答案的评论中回答。
答案 0 :(得分:3)
Post.includes(:comments).where("comments.approved = ?", true)
EdgeGuides对此功能的文档进行了大量改进。查看第12.2节here。
答案 1 :(得分:1)
只需添加新关联approved_comments
class Post < AR::Base
has_many :comments
has_many :approved_comments, :class_name => "Comment", :conditions => { :approved => true }
end
Post.includes(:approved_comments)
# or for Rails 2.x
Post.all(:include => :approved_comments)
修改强>
Post.includes(:approved_comments).where(:approved_comments => {:user_id => user.id})