是否可以按组合排序?

时间:2014-08-17 05:24:52

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

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

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

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

1 个答案:

答案 0 :(得分:1)

在Mysql中你可以使用CASE语句,但不知道红宝石,但你可以用这种方式在纯查询中使用你的逻辑

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