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

前端之家收集整理的这篇文章主要介绍了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(*)

猜你在找的Ruby相关文章