Activerecord中“includes”中的条件

时间:2012-07-05 11:54:30

标签: ruby-on-rails-3

如果我有一个名为“文章”的模型和另一个名为“评论”的模型,每个文章都有零个或多个评论,每个评论都有一个关联用户,我该如何做:

查找网站上的所有文章以及给定用户所做的任何评论

在SQL中:

SELECT * FROM articles LEFT OUTER JOIN comments ON articles.id = comments.article_id AND comments.user_id = 2

我试过这样做:

Article.joins('LEFT OUTER JOIN comments ON articles.id = comments.article_id AND comments.user_id = 2)

这里的结果是result.first.comments给了我这篇文章的所有评论。我可以通过在最后一部分添加条件来解决这个问题,但是它不会急于

2 个答案:

答案 0 :(得分:2)

如果您想要特定用户和相应文章发表的所有评论,这应该有效:

Comment.joins(:articles).where("comments.user_id" => 2).select("comments.*, articles.*")

答案 1 :(得分:0)

您可以尝试使用Article.joins(:comments).where("comments.user_id" => 2)吗?

查看here了解更多信息。