所以我在Active Admin中,在以下模型中Degree belongs to a user
和User has many degrees
对于User
,我们有一个site_id
,用于标识用户在Site
表格中的工作位置
因此,在Active Admin的学位模型的过滤器中,我似乎无法提取有人可以在Active Admin UI中过滤的网站列表。
到目前为止,这是我的过滤器:
major
institution
completion_date
这些直接来自Degree
表格
:user_active
来自Users表,其中包含Active
ActiveAdmin.register Degree do
belongs_to :user, :optional => true
menu :parent => 'Users'
config.sort_order = 'users.last_name_asc'
filter :user_active, :as => :select
**filter :site_id, collection: -> { User.all }, label: 'sites'**
filter :degree_type
filter :major
filter :institution
filter :completion_date
我也试过这个
filter :site_id, :as => :select, collection: -> { User.all }, label: 'sites'
并且没有错误消息
我也尝试了类似这样的内容,没有任何错误消息,但UI中没有任何内容再次出现
filter :site, label: "Site", :as => :select, :collection => User.site_id
我已尝试过此操作并收到以下错误:
filter :site_id, label: "Site", :as => :select, :collection => User.all
undefined method `site_id_eq' for Ransack::Search<class: Degree, base: Grouping <combinator: and>>:Ransack::Search
这里有任何帮助吗?
更新
我做了一些解决方法,这就是我最后编写的
filter :user_site_id, label: "site", :as => :select, :collection => User.all.map{|u| u.site}.map{|s| s.city if s.present? }.uniq.compact
该系列说
我认为这是一个更好的解决方案,因为我经历了这么多次迭代?有没有其他想法?我将在重构之后将这个实例方法设置为Users模型。
答案 0 :(得分:1)
试试这个:
filter :site_id, as: :select, collection: -> { User.pluck(:site_id) }, label: 'Sites'