Post.where('id > 10').limit(20).order('id asc').except(:order)
我想知道幕后发生了什么?据推测,链的每个部分都有助于构建一个sql SELECT,一旦链完成,就会执行语句,创建模型等.它如何“知道”链的末端在哪里?每个方法都返回一个创建sql片段的ActiveRecord :: Relation吗?
ActiveRecord::Relation
它“知道”链的末尾在哪里,因为在您尝试操作/访问数据之前查询实际上并未执行,并且这样做(通常是隐式)调用to_a运行exec_queries.
to_a
exec_queries