2014-12-04 85 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