计算属于rails中其他模型的记录的值

时间:2009-08-20 00:18:14

标签: ruby-on-rails

这可能是非常基本的,但我想弄清楚如何在我的应用的帖子索引页面上显示帖子在rails中有多少评论。

评论belongs_to发布,并发布has_many评论

只是不确定如何在索引页面上显示每个帖子的评论数量。

提前致谢!

埃利奥特

3 个答案:

答案 0 :(得分:5)

试试这个。

<%= post.comments.size %>

您可能也对pluralize方法感兴趣。

<%= pluralize(post.comments.size, 'comment') %>

这将输出“3条评论”或“1评论”等。

答案 1 :(得分:3)

我可能在这里错了,但你应该使用

<%= post.comments.count %>而不是size

ActiveRecord知道'count'是一种特殊方法,会将其变成SELECT count(id) from comments where post_id = x(这就是你想要的)。

size但是,它不是一个特殊的方法,ActiveRecord会将所有注释加载到内存中的数组SELECT * from comments where post_id = x,然后告诉你这个数组有多长,这可能是不必要的 - 如果您要在页面下方循环浏览注释数组,那么您可能希望使用size将它们加载到内存中,因为无论如何它都需要在以后发生。

答案 2 :(得分:0)

您还应该在此处使用ActiveRecord的一些内置功能。 counter_cache。查看here