`
hozaka
  • 浏览: 38139 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

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 或者未完成状态吧……

分享到:
评论
1 楼 wtb 2008-12-05  
这不是bug
看看find的源码
如果不是find某id并且也不是:first/:last时,则调用的是find_every,而every中处理了没有include选项的事.
但是,find某id的时候是直接调用的find_by_ids方法,这方法中没有处理:include选项(或者说直接忽略了)

相关推荐

Global site tag (gtag.js) - Google Analytics