新手问题 语法扫盲:order 的参数为什么不用冒号?

xiaoronglv · 2013年07月31日 · 最后由 cyqsdy 回复于 2013年09月23日 · 3086 次阅读

这是一个 model 中的 scope。order 中的参数用单引号裹着,怪怪的。

class User < ActiveRecord::Base
  scope :recent, order('created_at desc').limit(4)
end

语法好怪,为啥不用冒号。如果能这样写岂不更清爽。

class User < ActiveRecord::Base
  scope :recent, order(:created_at, desc).limit(4)
end

求扫盲。

order(created_at: :desc)

查手冊就有了

如果数据是顺序插入的话,用 order(id: :desc) 更好

#4 楼 @huacnlee 因为数字排序更快?或者 ID 已经建立了索引?

7 楼 已删除

#1 楼 @yesmeck #4 楼 @huacnlee 为啥我用 order(created_at: :desc) 的时候,console 的查询是 SELECT 'articles'.* FROM 'articles' ORDER BY '---\n:created_at: :desc\n'

#8 楼 @cyqsdy ActiveRecord 应该用 "" order("id desc")

#9 楼 @huacnlee 哦!原来如此

需要 登录 后方可回复, 如果你还没有账号请 注册新账号