我碰巧看到了一行
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?
答案 0 :(得分:0)
我建议你查看railscast episodes 239 active relation walkthrough以了解它的工作原理。
基本上,内部工作由Arel gem完成,activerecord对象在链接时简单地维护arel对象。在一天结束时,它允许arel
生成sql语句,然后使用生成的sql语句调用find_by_sql
。
问题在于,无论您是在order
之前调用limit
还是反过来,生成的sql语句都是相同的。一切都由数据库后端执行,activerecord只是解析结果并重新构建对象。