【发布时间】:2009-08-20 00:18:13
【问题描述】:
这可能是非常基本的,但我试图弄清楚如何在我的应用程序的帖子索引页面上显示一个帖子在 rails 中有多少 cmets。
cmets belongs_to 发布,并且发布 has_many cmets
只是不确定如何在索引页面上显示每个帖子的 cmets 数量。
提前致谢!
艾略特
【问题讨论】:
标签: ruby-on-rails
这可能是非常基本的,但我试图弄清楚如何在我的应用程序的帖子索引页面上显示一个帖子在 rails 中有多少 cmets。
cmets belongs_to 发布,并且发布 has_many cmets
只是不确定如何在索引页面上显示每个帖子的 cmets 数量。
提前致谢!
艾略特
【问题讨论】:
标签: ruby-on-rails
试试这个。
<%= post.comments.size %>
您可能还对pluralize 方法感兴趣。
<%= pluralize(post.comments.size, 'comment') %>
这将输出“3 cmets”或“1 comment”等。
【讨论】:
我在这里可能错了,但你应该使用
<%= post.comments.count %> 而不是size。
ActiveRecord 知道 'count' 是一种特殊方法,并将其转换为 SELECT count(id) from comments where post_id = x(这是您想要的)。
size 然而,这不是一个特殊的方法,ActiveRecord 会将所有 cmets 加载到内存中的一个数组中(SELECT * from comments where post_id = x,然后告诉你这个数组有多长,这可能是不必要的 - 如果你是将循环遍历页面下方的 cmets 数组,然后您可能希望使用 size 将它们加载到内存中,因为无论如何它都需要稍后发生。
【讨论】:
您还应该在此处使用一些 ActiveRecord 的内置功能。 counter_cache。看看here
【讨论】: