我在我的应用程序中使用 rails_admin。我的模型上有一些范围,以下是一个示例:
class User < ActiveRecord::Base
scope :unconfirmed, where('confirmed_at IS NULL')
end
在 rails_admin 中是否可以作为过滤器访问这些范围?就像您可以在活动管理员中一样。就像在用户部分的某处添加一个按钮一样。
谢谢
我在我的应用程序中使用 rails_admin。我的模型上有一些范围,以下是一个示例:
class User < ActiveRecord::Base
scope :unconfirmed, where('confirmed_at IS NULL')
end
在 rails_admin 中是否可以作为过滤器访问这些范围?就像您可以在活动管理员中一样。就像在用户部分的某处添加一个按钮一样。
谢谢
我知道这是一个非常古老的问题,但有人将我重定向到这个线程。您可以通过如下配置 rails_admin 轻松实现此目的
# /config/initializers/rails_admin.rb
config.model User do
list do
scopes [nil, :unconfirmed]
end
end
这将在标记为All和Unconfirmed的列表顶部插入两个选项卡,并在各个选项卡中过滤记录。单击这些选项卡将触发应用您的自定义范围的查询
希望能帮助到你。
我通过添加自定义 rails_admin 操作成功地做到了这一点。
更多细节:https ://github.com/sferik/rails_admin/wiki/Custom-action
例如:
# in lib/rails_admin/unconfirmed.rb
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdminUnconfirmed
end
module RailsAdmin
module Config
module Actions
class Unconfirmed < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :controller do
Proc.new do
@objects = User.unconfirmed
render "index"
end
end
register_instance_option :collection do
true
end
end
end
end
end
关键是它是一个“收集”动作。然后将其添加到 rails_admin 设置:
# in config/initializers/rails_admin.rb
# require File.join(Rails.root, "lib", "rails_admin", "unconfirmed")
RailsAdmin.config do |config|
config.actions do
# root actions
dashboard
# collection actions
index
unconfirmed do
only 'User'
end
end
# snip!
end
这个新操作将出现在 User 模型的索引级别。