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

ruby-on-rails – Rails 3 ActiveRecord方法链接,引擎盖下

发布时间:2020-12-17 04:17:52 所属栏目:百科 来源:网络整理
导读:假设您构建了一个涉及多个方法链接的查询,例如 Post.where('id 10').limit(20).order('id asc').except(:order) 我想知道幕后发生了什么?据推测,链的每个部分都有助于构建一个SQL SELECT,一旦链完成,就会执行语句,创建模型等.它如何“知道”链的末端在哪里
假设您构建了一个涉及多个方法链接的查询,例如
Post.where('id > 10').limit(20).order('id asc').except(:order)

我想知道幕后发生了什么?据推测,链的每个部分都有助于构建一个SQL SELECT,一旦链完成,就会执行语句,创建模型等.它如何“知道”链的末端在哪里?每个方法都返回一个创建SQL片段的ActiveRecord :: Relation吗?

解决方法

你是对的,每个都返回一个 ActiveRecord::Relation.每个方法调用建立在它被调用的关系上(除了第一个,显然没有任何东西需要构建,因为它没有在关系上调用),并返回它.

它“知道”链的末尾在哪里,因为在您尝试操作/访问数据之前查询实际上并未执行,并且这样做(通常是隐式)调用to_a运行exec_queries.

(编辑:李大同)

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

    推荐文章
      热点阅读