0

我碰巧看到了一条线

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是'limit'在查询中有效,'sample'没有..对吗?,它似乎被照顾到了ruby array sample..对吗?

4

1 回答 1

0

我建议您查看 railscast 的第 239 集活动关系演练以了解它是如何工作的。

基本上,内部工作由Arel gem完成,activerecord 对象在您进行链接时仅维护 arel 对象。到最后,它让我们arel生成 sql 语句,然后find_by_sql用生成的 sql 语句调用。

问题是无论你order之前调用limit还是反过来调用,生成的sql语句都是一样的。一切都由数据库后端执行,activerecord 只是简单地解析结果并建立对象。

于 2012-05-28T14:24:04.637 回答