如何使Active Admin自定义排序起作用?

时间:2018-08-23 13:10:30

标签: ruby-on-rails ruby activeadmin

我正在尝试使用https://github.com/activeadmin/activeadmin/blob/master/docs/3-index-pages/index-as-table.md#custom-sorting中所述的“自定义排序”功能,但似乎无法在非常简单的情况下使用它。我的代码的存储库位于:https://github.com/newton10471/active_admin_custom_sorting。对于它的价值,我使用的是旧版本的Rails(4.2.5)和Active Admin(1.1.0)。

在上述回购中,我的AdminUser模型如下所示:

class AdminUser < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, 
         :recoverable, :rememberable, :validatable

  has_many :gold_stars
end

我的GoldStar模型看起来像这样:

class GoldStar < ActiveRecord::Base
  validates :admin_user_id, presence: true
  belongs_to :admin_user
end

我希望能够在“金星”列上进行排序,该列是每个AdminUser获得的金星数量的计数。

我在app / admin / admin_user.rb中使用自定义排序的尝试如下:

order_by(:gold_stars) do |order_clause|
  ['COUNT(gold_stars.id)', order_clause.to_sql].join(' ')
end

index do
  column :gold_stars, sortable: true do |admin_user|
    admin_user.gold_stars.count
  end
end

但是除非我包括sortable:true,否则该列不会启用为可排序的:true,这使我认为我做错了什么或某些事情不能正常工作。上面的设置似乎对它的排序与默认情况没有什么不同。查看Rails日志,虽然params [:order]填充了类似于Proc的内容,但看起来并没有修改SQL查询,类似“ Proc:0x00007fb3c40c8080 @ / Users / user / active_admin_custom_sorting / app /admin/admin_user.rb:12_desc“

0 个答案:

没有答案