我有一个User模型和一个Post模型。用户has_many帖子;发布belongs_to用户。
我想创建一个表,列出用户和每个用户的帖子总数,只要帖子的public_flag为't'。这可以直接在视图中使用吗?
在我的控制器中:
@users = User.all
在我看来:
<% @users.each do |user| %>
<%= user.posts.size%>
<% end %>
当然,无论public_flag是否为真,这都会获得所有用户的帖子。有没有办法在视图中设置条件,还是需要在控制器中做一些奇特的事情(AR查询?)。
提前感谢您的帮助!
答案 0 :(得分:2)
您可以对模型进行菊花链限制,例如:
user.posts.where(:public_flag => 't').count
使用count
而不是size
的优势在于,不是将所有帖子都拉到内存中并对它们进行计数,ActiveRecord将对数据库执行计数查询并节省大量处理。
答案 1 :(得分:0)
user.posts.find_by_public_flag(true).count