rails,嵌套关联模型AR查询

时间:2014-11-12 04:57:27

标签: ruby-on-rails ruby activerecord model associations

我有一个User模型和一个Post模型。用户has_many帖子;发布belongs_to用户。

我想创建一个表,列出用户和每个用户的帖子总数,只要帖子的public_flag为't'。这可以直接在视图中使用吗?

在我的控制器中:

@users = User.all

在我看来:

<% @users.each do |user| %>
<%= user.posts.size%>
<% end %>

当然,无论public_flag是否为真,这都会获得所有用户的帖子。有没有办法在视图中设置条件,还是需要在控制器中做一些奇特的事情(AR查询?)。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以对模型进行菊花链限制,例如:

user.posts.where(:public_flag => 't').count

使用count而不是size的优势在于,不是将所有帖子都拉到内存中并对它们进行计数,ActiveRecord将对数据库执行计数查询并节省大量处理。

答案 1 :(得分:0)

user.posts.find_by_public_flag(true).count