ruby-on-rails – Rails中的大小,长度和数量

1.9.3p194 :002 > u = User.find_by_email("email@mail.ru")
1.9.3p194 :005 > u.addresses.size
 => 1 
1.9.3p194 :006 > u.addresses.length
 => 1 
1.9.3p194 :007 > u.addresses.count

Rails 3.2.3中的大小,长度和数量没有区别,不是吗?

解决方法

长度将加载所有的对象只是为了计数它们;就像是:
select * from addresses...

然后返回结果计数.
你可以想象 – 这是不好的表现

计数将发布

select count(*) from addresses...

这是更好的,因为我们没有加载所有地址只是为了计数它们

大小更聪明 – 它会检查关联是否已经加载,如果为true,则返回长度(不发出对数据库的调用).

如果您的用户模型中有一个名为address_count的字段,size也会检查counter_cache,那么size将使用该字段进行计数,因此不需要在地址表上发出计数.

如果全部失败,size将在数据库上发出select count(*)

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...