活跃的记录样本如何运作?

时间:2012-05-28 10:58:18

标签: ruby-on-rails-3 activerecord ruby-on-rails-3.1

我碰巧看到了一行

Item.where(conditions).limit(10).order('created_at desc')

我想知道它与

类似
Item.where(conditions).order('created_at desc').limit(10)

根据rails 3的新变化,活动记录

,似乎没问题

但是,如果我们想要的话,如果有10个样品,*由created_at *排序。这是我的问题#1

问题2是'限制'在查询中工作,'sample'不是..right?,它似乎是照顾ruby数组sample..right?

1 个答案:

答案 0 :(得分:0)

我建议你查看railscast episodes 239 active relation walkthrough以了解它的工作原理。

基本上,内部工作由Arel gem完成,activerecord对象在链接时简单地维护arel对象。在一天结束时,它允许arel生成sql语句,然后使用生成的sql语句调用find_by_sql

问题在于,无论您是在order之前调用limit还是反过来,生成的sql语句都是相同的。一切都由数据库后端执行,activerecord只是解析结果并重新构建对象。