我有两种模式:
class Worker
has_many :location_preferences
end
class LocationPreference
attr_accessible :location
belongs_to :worker
end
在ActiveAdmin Worker索引中,我希望能够通过使用选定:location
的位置首选项来过滤工作者(或者理想情况下,通过多个位置首选项查找工作人员的复选框)。
在其他情况下,我已经能够对子索引进行过滤,如下所示:
ActiveAdmin.register Account
filter :user_last_name
...使用提供的last_name
查找用户拥有的帐户。但我没有太多运气通过子类的属性过滤父类。我可以制作一个范围按钮,但我已经为这个AA资源提供了一堆范围按钮,并且不想拥挤它。此外,似乎应该有一些方法来做到这一点,而无需为每个可以想象的过滤器选项编写范围。
提前感谢您的任何帮助!
答案 0 :(得分:1)
添加has_many :locations, through: :location_preferences
将允许将位置过滤器添加到Worker
。
class Worker
has_many :location_preferences
# Add has many through relation
has_many :locations, through: :location_preferences
end
然后可以使用位置过滤器定义ActiveAdmin资源。
ActiveAdmin.register Worker do
filter :locations, as: :check_boxes
end