相关模型中属性的高级排序

时间:2016-06-27 16:51:13

标签: ruby-on-rails

我有一组用户。他们有很多要求。

# user.rb
has_many :requests

现在我想按最后请求created_at时间戳排序。

因此,如果用户有最新请求(created_at最接近当前时间的请求),则他们会#1等。

有什么想法吗?

我已经尝试了

User.includes(:requests).order('requests.created_at')

然而,通过第一个请求created_at时间戳对它们进行排序,这显然不是我想要的。我希望只检索他们的最后一个请求。然后按用户在日期创建的最后一个请求对用户进行排序,并按用户对用户进行排序。

更新 此外,如果用户没有任何请求,他们应该在底部。现在,如果他们没有任何东西,他们就会被放在首位。

2 个答案:

答案 0 :(得分:1)

您必须按降序排序。尝试

User.includes(:requests).order('requests.created_at desc').first()

答案 1 :(得分:0)

<t t-if="quant is not Empty" />  # doesn't work
<t t-if="quant is not False" />  # doesn't work

您需要User.joins(:requests).includes(:requests).order('requests.created_at desc') 它才会对联接表进行排序。

joins会为您预先加载includes,它无法帮助您对requests进行排序。

  

<强>更新

借鉴SQL how to make null values

要融入这种情况,它可能看起来像这样

requests
  

第一个订单会将null值放在底部,然后按日期desc

排序