在我的代码模型中,我编写了如下所示的范围。
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
有可能吗?如果是这样,我该如何更改我的代码?
答案 0 :(得分:1)
在Mysql中你可以使用CASE
语句,但不知道红宝石,但你可以用这种方式在纯查询中使用你的逻辑
ORDER BY CASE WHEN user.id=10000
THEN code.created_at
ELSE code.users.last_active_at
END
DESC