Rails 3条件急切加载

时间:2012-10-02 17:20:24

标签: ruby-on-rails-3.2

来自Rails文档http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

Post.includes([:author, :comments]).where(['comments.approved = ?', true]).all

请注意,使用此类条件可能会产生意想不到的后果。在上面的示例中,帖子没有批准的评论根本不会返回,因为这些条件适用于整个SQL语句,而不仅仅适用于关联。

好的,那么如何返回所有帖子,包括示例中没有批准评论的帖子?

我可以在SQL中使用:

SELECT posts.* from posts LEFT JOIN comments ON (comments.post_id = posts.id AND comments.approved = true);

但这并不适用于rails的连接方法,因为下次访问Post.com将触发SQL请求,该请求将使所有注释得到批准而不会被批准。

有任何线索吗? THX

Rails 3.2.8

0 个答案:

没有答案