Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails, how to sort the array of active records by created_at

Hi there I have two arrays having different values of active records from same table but having different values, I want to combine them both and then sort them by created_at, but not getting any clue, I am stuck. Please help.

Here is my code:

@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

any thing is not working please help me to sort the @total.

like image 780
Lakhan Avatar asked Sep 17 '13 11:09

Lakhan


2 Answers

You can sort an array by using sort_by.

In your case, you could do the following:

@total.sort_by(&:created_at)

Update:

  • Remove @all << @find_user and @all_entry << @find_referal_user
    • Why? Because otherwise you will have an array with multiple arrays
  • Replace @total with: @total = @find_user + @find_referal_user
    • Why? Because @total will now only consists of one merged array with all objects, ready to get sorted through .sort_by(&:created_at).
like image 143
Peter de Ridder Avatar answered Sep 27 '22 22:09

Peter de Ridder


You can always use the order method:

@total.order! 'created_at DESC'
like image 22
josetapadas Avatar answered Sep 27 '22 21:09

josetapadas