Ruby on rails rails,嵌套关联模型AR查询

Ruby on rails rails,嵌套关联模型AR查询,ruby-on-rails,ruby,activerecord,model,associations,Ruby On Rails,Ruby,Activerecord,Model,Associations,我有一个用户模型和一个帖子模型。用户有很多帖子;帖子属于用户 我想创建一个表,列出一个用户和每个用户的帖子总数,只要帖子的public_标志是“t”。在视图中是否可以直接执行此操作 在我的控制器中: @users = User.all 我认为: <% @users.each do |user| %> <%= user.posts.size%> <% end %> 当然,无论public_标志是否为true,这都会获取用户的所有帖子。是否有任何方法可以在

我有一个用户模型和一个帖子模型。用户有很多帖子;帖子属于用户

我想创建一个表,列出一个用户和每个用户的帖子总数,只要帖子的public_标志是“t”。在视图中是否可以直接执行此操作

在我的控制器中:

@users = User.all
我认为:

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

当然,无论public_标志是否为true,这都会获取用户的所有帖子。是否有任何方法可以在视图中设置条件,或者我需要在控制器中执行一些特殊的操作(AR查询?)


提前谢谢你的帮助

您可以为模型设置菊花链限制,如下所示:

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

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

此解决方案从数据库中提取所有匹配的记录,迫使rails为所有这些日志实例化对象,只是数一数。使用
count
而不是“大小”可以解决此问题。同意,刚刚看到您的答案。。计数会更好:)我已经更新了答案。太棒了!谢谢,詹姆!同时也感谢您在计数与大小方面的额外说明。干杯
user.posts.find_by_public_flag(true).count