Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails object.count返回0。但是,有吗?返回true。什么';发生什么事了?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails object.count返回0。但是,有吗?返回true。什么';发生什么事了?

Ruby on rails object.count返回0。但是,有吗?返回true。什么';发生什么事了?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,@card.submissions返回以下内容: <ActiveRecord::Associations::CollectionProxy [#<Submission id: nil, user_id: nil, card_id: 7, created_at: nil, updated_at: nil, text: "">]> 看起来提交是一条新记录(因为id为零)。如果是新的,它还没有进入数据库count对数据库进行SQL调用,以确定行数,因此正确地返回零any?返回

@card.submissions
返回以下内容:

<ActiveRecord::Associations::CollectionProxy [#<Submission id: nil, user_id: nil, card_id: 7, created_at: nil, updated_at: nil, text: "">]>

看起来提交是一条新记录(因为id为零)。如果是新的,它还没有进入数据库
count
对数据库进行SQL调用,以确定行数,因此正确地返回零
any?
返回true,因为集合中有一个对象


如果您尝试
@card.submissions.to_a.size
(确保从数据库加载它们,然后检查阵列的大小),会发生什么情况?

这是一个老问题,但我还是想插嘴。我遇到了一个类似的问题,发现:

@card.submissions.any? = true
@card.submissions.count = 0
尽管我的数据库中没有记录,但我已初始化了
@card.submission
数组中的空
@card.submissions
对象

为了缓解这个问题,我尝试了

@card.submissions.all.any?

从数据库中重新加载数组,并返回
false

这是正确的,今天我学到了一些东西。作为参考,这里是方法,还有方法。菲利普,你说得对。返回1。我在同一页上有一个提交表单(我正在用submission.new初始化它)。我怎样才能着手解决这个问题呢?(不使用@card.submission.count…我认为这是不雅的)
@card.submissions.size
就足够了-relation没有定义size方法,所以它会将其委托给target。顺便说一句-使用
size
而不是
count
是解决N+1问题的好方法。@Broisasse并不总是这样。有时它会进行SQL调用。ActiveRecord::Associations::CollectionProxy.size表示:返回集合的大小。如果集合尚未加载,它将执行SELECT COUNT(*)查询。否则它会调用collection.size.@alejoriveralara解决什么问题?我不知道你的最终目标是什么(新的vs持久记录,等等)?
@card.submissions.all.any?