【问题标题】:Is it possible to sort by combinations?是否可以按组合排序?
【发布时间】:2014-08-17 05:24:52
【问题描述】:

在我的代码模型中,我编写了如下所示的范围。

scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) }

它基本上按 desc 顺序按 code.users.last_active_at 排序。

一切正常。 现在,我想为它添加额外的条件。

如果 user.id=10000,我想使用 code.created_at 而不是 code.user.last_active_at。 所以排序条件将是
code.created_at
的组合 和
code.users.last_active_at

有可能吗?如果是这样,我该如何更改我的代码?

【问题讨论】:

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


    【解决方案1】:

    在 Mysql 中,您可以使用 CASE 语句,但不知道 ruby​​,但您可以通过这种方式在纯查询中使用您的逻辑

    ORDER BY CASE WHEN user.id=10000
                  THEN code.created_at
                  ELSE code.users.last_active_at
             END
    DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2020-09-24
      • 2018-01-04
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多