2014-12-04 68 views
1

滤波的has_many协会我有两个型号:的Rails 3 + ActiveAdmin - 从父模型索引

class Worker 
    has_many :location_preferences 
end 

class LocationPreference 
    attr_accessible :location 
    belongs_to :worker 
end 

在ActiveAdmin工人指标,我希望能够通过具有选定位置的喜好来筛选员工:location(或者,理想情况下,用于通过多个位置首选项查找工作人员的复选框)。

在其他情况下我已经能够在子指标做这样的筛选:

ActiveAdmin.register Account 

filter :user_last_name 

...找到与所提供的last_name用户所拥有的账户。但是我没有太多运气通过子类的属性过滤父类。我可以制作一个范围按钮,但是我已经为这个AA资源提供了一堆范围按钮,并且不想挤占它。另外,似乎应该有一些方法来做到这一点,而不必为每个可想象的过滤器选项编写一个范围。

在此先感谢您的帮助!

回答

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