Rails,如何通过created_at对活动记录数组进行排序

Lak*_*han 13 sorting activerecord ruby-on-rails

嗨,我有2个数组有不同的活动记录值来自同一个表,但有不同的值,我想结合两者然后排序created_at,但没有得到任何线索,我被卡住了.请帮忙.

这是我的代码:

@find_user = EmployeeLeave.where(global_user_id: @allarray[i]).find(:all)
@all << @find_user
@find_referal_user = EmployeeLeave.where(referral_id: @allarray[i]).find(:all)
@all_entry << @find_referal_user
@total = @all + @all_entry
Run Code Online (Sandbox Code Playgroud)

任何事情都不起作用请帮助我排序@total.

Pet*_*der 28

您可以使用sort_by对数组进行排序.

在您的情况下,您可以执行以下操作:

@total.sort_by(&:created_at)
Run Code Online (Sandbox Code Playgroud)

更新:

  • 删除@all << @find_user和@all_entry << @find_referal_user
    • 为什么?因为否则您将拥有一个包含多个数组的数组
  • 将@total替换为:@total = @find_user + @find_referal_user
    • 为什么?因为@total现在只包含一个包含所有对象的合并数组,可以通过.sort_by(&:created_at)进行排序.


jos*_*das 6

您始终可以使用订购方法:

@total.order! 'created_at DESC'
Run Code Online (Sandbox Code Playgroud)


Nez*_*zir 5

如果您需要降序排列,只需使用reverse

@total.sort_by(&:created_at).reverse
Run Code Online (Sandbox Code Playgroud)