ActiveRecord 中的 include 关系

对 include 很多开发者避而不谈,也有很多人趋之若骛。其实归根结底只是生成了不同的 SQL 语句。至于造成的影响,见人见智,当然和项目的需求有很大的关系。

但是有一点,include 既不是天使也不是恶魔。

合理的使用 include 可以避免 N+1 的问题,但是 Rails 生成的 SQL 确实不怎么好看……而且今天还发现了一个问题:

A 中声明了一个关系

has_many :items, :order => 'some_time_field DESC'

但是在执行 A.find(123, :include => :items) 的时候,可以发现对象的 items 集合并没有按照预想的顺序排列,查看 log 中的 SQL 记录,发现 order 子句并不在里面。

暂且归结为 BUG 或者未完成状态吧……

Comments

comments powered by Disqus