出于某种原因,似乎.each
块只迭代一次,当我写下时可以说3或4条评论,@total_comments
只显示1而不是3或4。
关系是:
有人可以帮忙吗?
控制器
@total_comments = 0
@posts = current_user.posts
@posts.each do |post|
@comments = post.comments
@new_comments = @comments.count -@comments.where("created_at < ?",1.day.ago).count
@total_comments += @new_comments
end
视图
<%= @total_comments %>
答案 0 :(得分:2)
要获得您想要的所有评论的计数
@total_comments = Comment.count(
:conditions => ["post.user_id = ? and comment.created_at >= ?",
current_user.id, 1.day.ago],
:include => :post
)
虽然不知道你的数据模型,但很难确切地说出来。
正如@m_x讨论的那样,更整洁,更多的rails-3 / ruby 1.9 esque版本
@total_comments = Comment
.joins( post: :user )
.where( users: {id: current_user.id} )
.where( "created_at < ?", 1.day.ago )
.count
答案 1 :(得分:1)
改为使用:
@total_comments = Comment
.joins( post: :user )
.where( users: {id: current_user.id} )
.where( "comments.created_at < ?", 1.day.ago )
.count
修改强>
我绝对需要一些睡眠。正如@Ryan所指出的那样简单得多:@total_comments = current_user.comments.where( "created_at < ?", 1.day.ago ).count
...但OP必须将此添加到他的User
模型中:
has_many :comments, through: :posts
答案 2 :(得分:0)
看起来你忘了保存评论 - 有些评论没有保存到数据库中,这就是为什么你会丢失一些评论。
此外,您可以使用自动保存选项,每次更改变量时自动保存变量。