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

ruby-on-rails – ActiveRecord,方法链接和请求执行

发布时间:2020-12-17 02:55:49 所属栏目:百科 来源:网络整理
导读:我目前正在尝试理解ActiveRecord如何工作以链接条件方法然后执行sql请求. 理解方法链接非常简单,我想到的一切都很好地解释并在这里恢复here. 但是,我仍然无法弄清楚,上面的文章没有解释:ActiveRecord如何知道何时执行SQL请求. 例如,如果我编写User.where(so
我目前正在尝试理解ActiveRecord如何工作以链接条件方法然后执行sql请求.

理解方法链接非常简单,我想到的一切都很好地解释并在这里恢复here.

但是,我仍然无法弄清楚,上面的文章没有解释:ActiveRecord如何知道何时执行SQL请求.

例如,如果我编写User.where(some_column:“hello”).limit(5),则ActiveRecord将实例化查询构建器,设置有关some_column值和有限数量结果的条件.

但是,在执行.limit(5)之后,它还执行请求并返回结果:ActiveRecord如何知道?怎么知道它是最终的条件方法,它需要返回一个结果?它是否在每个链接条件下执行SQL请求?

在我上面发表的文章中,作者通过调用最终方法来欺骗,每个方法都在执行请求并返回结果.

解决方法

limit(5)并不比where更特殊,实际上它返回一个ActiveRecord :: Relation,就像在哪里一样.您可以交换链的顺序来证明它.

User.where(some_column: "hello").limit(5)
User.limit(5).where(some_column: "hello")

会发生的是,某些方法显式调用(例如在控制器中)或隐式调用(在CLI中)触发查询的执行.这些方法例如:

>可以使用的方法,如每个,选择等
>显式铸造方法,如to_a
>查询方法,如first,last,take

只要隐式或显式调用其中一个方法,就会执行查询.

(编辑:李大同)

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

    推荐文章
      热点阅读