【发布时间】:2017-11-10 18:26:07
【问题描述】:
复制活动记录对象后,我的新对象关联大小返回数据库中实际数量的两倍。我已经看到 size 尝试加载缓存版本并且 count 实际上执行查询,但我不想总是执行 SQL 查询只是为了显示数量。 我的(相关)代码如下所示:
class Model1 < ActiveRecord::Base
def copy_model
new_model = self.dup
new_model.name = "Copy of #{name}"
new_model.association = association.map{|a| a.dup}
new_model.save
new_model
end
在 new_model.association 上调用 .size 后返回两倍的 .count
【问题讨论】:
-
不,你一定是在别处做错了。 Count 和 Size,两者都会给出相同的输出。此外,在您上面的代码中,它们在复制关联时出现语法错误。否则,上面的代码可以完美地复制模型。
-
试试
new_model.association.reload.count -
@MrYoshiji
count是一个查询,将返回准确的结果。如果“Array”已经是loaded?,则size是针对关联“Array”的方法调用。如果size包含尚未预置的对象,则size可能与 count 不同。count带或不带reload将返回相同的结果。
标签: ruby-on-rails ruby activerecord