Невозможно отсортировать записи в активном администраторе по виртуальному атрибуту.
У меня есть модель Competition
.
В конкурсе есть 2 столбца с именами starts_at
и ends_at
.
Соревнования могут иметь любой из этих статусов в отношении дат starts_at
и ends_at
.
- Открыть , если
starts_at < Time.now && ends_at > Time.now
- Закрыто , если
Time.now > ends_at
- Не открыто , если
starts_at > Time.now
Я хочу применить сортировку по статусу в этом порядке (и наоборот)
- Открыть сверху
- Закрыт после открытия
- Не открыто в конце
Файл /admin/competition.rb
Метод: index
Виртуальный атрибут: Status
column "Status" , sortable: true do |competition|
competition.status
end
Файл app/model/copetition.rb
способ получения статуса
def status
return 'Unknown' unless (starts_at && ends_at)
return 'Not Opened' if Time.now < starts_at
return 'Open' if (Time.now > starts_at && Time.now < ends_at)
return 'Closed' if Time.now > ends_at
end
Я не смог найти способ применить этот вид сортировки.
Дополнительная информация
'rails', '4.2.6'
ruby '2.2.4'
'activeadmin', '1.0.0.pre4'