为什么rails控制台提供的关系大小与服务器不同?

时间:2013-10-07 06:05:04

标签: ruby-on-rails ruby ruby-on-rails-4

我在rails控制台和网络服务器中的帖子和评论之间的关系有所不同!怎么会这样?我很困惑,因为部分渲染错误的链接,我认为其他错误,但部分不应该渲染,因为集合应该是空的!我甚至使用if / else检查大小,它仍然显示空关系的部分!

Rails控制台:

irb(main):033:0> p=Post.find(6)
=> #<Post id: 6, title: "Yahoo", comment: "The home page.", link: nil, user_id: nil, created_at: "2013-10-06 21:53:24", updated_at: "2013-10-07 00:43:25">
irb(main):034:0> p.comments.size
=> 0

帖/ show.haml:

%h2 Comments
Post ID:
=@post.id
, Comment Size: 
=@post.comments.size
- if @post.comments.empty?
  No comments.
- else
  = render @post.comments

浏览器:http://127.0.0.1:3000/posts/6

Comments

Post ID: 6 , Comment Size: 1
Commenter:

comments / _comment.haml:似乎没有相关性......

Rails 4.0.0,ruby 2.0.0p247(2013-06-27)[i386-mingw32]

1 个答案:

答案 0 :(得分:2)

也许在这个页面的某个地方有一个新评论的表单,你在控制器中建立新的评论:

@new_comment = @post.comments.build

这就是@ post.comments.count为1的原因。您可以重写代码:

= @post.comments.reject{ |t| t.new_record? }.count

UPD。

有一种更好的方法可以做到这一点:您可以在评论模型中添加拒绝方法,而不是添加拒绝方法:

scope :saved, where('id is not ?', nil)

然后在视图中:

@post.comments.saved.count