Вечер в радость, чаек в сладость.
ENV: ruby 2.4.1 + ror 5.1.4 + postgresql
Имеется модель:
create_table "phones", force: :cascade do |t|
t.integer "id"
t.string "type"
t.datetime "created_at"
end
Поле type в модели может принимать всего 3 значения: ios, android, wp.
В таблице имеется ( к примеру ) 12 записей - по 4 каждого из type, созданных непоследовательно ( те. ios, ios, android, wp ... )
Требуется сделать, сортировку чтобы сначала выводился тип ios, отсортированный по created_at, далее android так же по created_at, ну и на сладкое wp.
Собственно можно решить так:
ordering_by_id = []
ordering_by_id << Phone.where(type: 'ios').order(created_at: :desc).select(:id) ....
ordering_by_id << Phone.where(type: 'android').order(created_at: :desc).select(:id) ....
@phones = Phone.where(id: ordering_by_id).order_as_specified(id: ordering_by_id)
Но думаю, есть более изящный вариант.
Заранее спасибо и плюс вам в карму!