【发布时间】:2019-08-12 06:10:05
【问题描述】:
无法按虚拟属性对活动管理员中的记录进行排序。
我有一个模特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'
【问题讨论】:
标签: mysql ruby ruby-on-rails-4 activerecord activeadmin