加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:51:51 所属栏目:百科 来源:网络整理
导读: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中的大小,长度和数量没有区别,不是吗? 解决方法 长度将加载所有的对象
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(*)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读