【问题标题】:Last doesn't work with default order in ActiveRecordLast 不适用于 ActiveRecord 中的默认顺序
【发布时间】:2014-09-01 23:56:18
【问题描述】:

我的 Single 模型中有以下代码: default_scope order("created_at ASC")

当我打电话时

Single.where("user_id = ?", dan).last(2)

我得到: SELECT "singles".* FROM "singles" WHERE (user_id = 22) ORDER BY created_at ASC, id DESC LIMIT 2

DESC 不是应用于 created_by,而是应用于 id。

知道如何解决吗?

【问题讨论】:

    标签: ruby-on-rails-3 activerecord


    【解决方案1】:

    您不能覆盖默认范围。这就是它添加到 order 子句的原因

    你可以的

    Single.unscoped.order('created_at desc').where("user_id=?", 'dan').last(2)
    

    我建议你不要使用default_scope,而使用普通的scope(默认作用域被认为是邪恶的)。所以你不要忘记有一个默认范围是由created_at订购的

    另外阅读this会让你更好地理解

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 2019-03-01
      • 2018-07-15
      相关资源
      最近更新 更多