Ruby on rails Ransack赢得';t排序计数列?

Ruby on rails Ransack赢得';t排序计数列?,ruby-on-rails,ruby,ruby-on-rails-4,ransack,Ruby On Rails,Ruby,Ruby On Rails 4,Ransack,我的分类有问题 在对id和mac列进行排序时,Ransack可以正常工作,但在frequency列上不起作用。当我点击frequency时,日志中没有显示任何内容 型号: scope :with_frequency, -> { select('devices.*,tr.times AS frequency'). joins('join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY de

我的分类有问题

在对
id
mac
列进行排序时,Ransack可以正常工作,但在
frequency
列上不起作用。当我点击
frequency
时,日志中没有显示任何内容

型号:

scope :with_frequency, -> {
select('devices.*,tr.times AS frequency').
joins('join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON tr.device_id = devices.id')}
控制器:

def index
@search = Device.with_frequency.search(params[:q])
@search.sorts = 'frequency desc' if @search.sorts.empty?
@devices = @search.result.paginate(page: params[:page], per_page: 20)
end
视图:

日志(首先单击频率而不是ID):


谢谢你的帮助。

我想问题在于
设备
没有
频率
栏。请尝试在join语句中包含列,如
groupbydevice\u id orderbytimes
谢谢您的回答。我想这就是问题所在,但我不知道解决办法。从
按设备分组\u id按时间顺序添加不起作用。为什么您的作用域名称是
带\u frequency
,而您在控制器中调用
frequency
?这是一个复制和粘贴错误。我用频率调用控制器的
,范围与我的问题完全相同@你找到解决这个问题的方法了吗?
%th= sort_link @search, :id, "ID"
%th= sort_link @search, :mac, "MAC-Addresse"
%th= sort_link @search, :frequency, "Frequency"
Parameters: {"page"=>"1", "q"=>{"s"=>"frequency desc"}}
Device Load (39.8ms)  SELECT devices.*,tr.times AS frequency FROM "devices" join (SELECT     device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON        tr.device_id = devices.id LIMIT 20 OFFSET 0

Parameters: {"page"=>"1", "q"=>{"s"=>"id asc"}}
Device Load (61.3ms)  SELECT devices.*,tr.times AS frequency FROM "devices" join (SELECT device_id,count(device_id) AS times FROM timed_requests tr GROUP BY device_id) AS tr ON tr.device_id = devices.id ORDER BY "devices"."id" ASC LIMIT 20 OFFSET 0