我正在使用ActiveAdmin,我正在尝试显示带有计数的列名Active Jobs
获得此计数涉及三个模型
1. Staffroom
2. StaffroomPage
3. Job
class StaffroomPage < ActiveRecord::Base
belongs_to :staffroom
class Staffroom < ActiveRecord::Base
has_one :staffroom_page
has_many :jobs
class Job < ActiveRecord::Base
belongs_to :staffroom
现在在admin/staffroom_pages.rb
内我可以显示列和计数
column :active_jobs, sortable: 'active_jobs' do |staffroom_page|
staffroom_page.staffroom.jobs.where(:state=> 'active').count
end
但是我无法通过active_jobs
对数据进行排序,我看到以下错误
PG :: UndefinedColumn:ERROR:列“active_jobs”不存在
所以问题是如何使排序适用于列active_jobs
,请注意,这不是页面上唯一的可排序列,几乎所有列都是可排序的,这是唯一一个不起作用的列。 / p>
答案 0 :(得分:1)
来自activeadmin github上的this post,可能解决此问题的方法是
index do
column :active_jobs, sortable: 'active_jobs' do |staffroom_page|
staffroom_page.staffroom.jobs.where(:state=> 'active').count
end
end
controller do
def scoped_collection
super.joins(
%(LEFT JOIN "jobs" ON "staffroom_pages"."staffroom_id" = "jobs"."staffroom_id"
AND "jobs"."state" = 'active'))
.select('staffroom_pages.*, COUNT(jobs.id) as active_jobs')
.group('staffroom_pages.id')
end
end
答案 1 :(得分:0)
您是否查看了custom sorting上的文档?