相关疑难解决方法(0)

如何在没有多个查询的情况下将Rails ActiveRecord链接到"where"子句?

我是一名PHP开发人员,学习Ruby on Rails的优点,我喜欢ActiveRecord,我注意到一些非常有趣的东西,这就是ActiveRecord方法检测方法链结束执行查询的方式.

@person = Person.where(name: 'Jason').where(age: 26)

# In my humble imagination I'd think that each where() executes a database query
# But in reality, it doesn't until the last method in the chain
Run Code Online (Sandbox Code Playgroud)

这个巫术是如何运作的?

activerecord ruby-on-rails

69
推荐指数
2
解决办法
4万
查看次数

ActiveRecord,方法链接和请求执行

我目前正在尝试理解ActiveRecord如何工作以链接条件方法然后执行sql请求.

理解方法链接非常简单,我想到的一切都很好地解释并在这里重新开始.

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

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

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

在我上面发布的文章中,作者通过调用最终方法来进行欺骗,该方法each正在执行请求并返回结果.

ruby activerecord ruby-on-rails method-chaining ruby-on-rails-4

4
推荐指数
1
解决办法
631
查看次数