2011-10-18 14 views
2

I持っている3つの関連するモデル:のRails 3、ActiveAdminのカスタムフィルタ

class Brand < ActiveRecord::Base 
    has_many :car_models 
end 

class CarModel < ActiveRecord::Base 
    has_many :production_years 
    belongs_to :brand 
end 

class ProductionYear < ActiveRecord::Base 
    belongs_to :car_model 
end 

だから、私はブランドによるフィルタリングを行いたい場合、私は、ActiveAdminのproduction_yearセクションにカスタムフィルタを作成することができますか?そこにあるデフォルトのフィルタ:car_modelの選択と年の値

答えて

4

あなたはこれを試しましたか?

ActiveAdmin.register ProductionYear do 
    filter :brand, :as => :check_boxes, :collection => proc { Brand.all } 
end 

EDIT私はあなたの協会の複雑さに気付かなかったおっと、私はあなたがあなたのProductionYearクラスのものにこれを追加した場合、より良い動作するはずだと思う:

class ProductionYear < ActiveRecord::Base 
    belongs_to :car_model 
    has_one :brand, :through => :car_model 
end 
+0

はい、この原因のエラー「未定義methon " #のためのbrand_eq '" – BazZy

+0

問題はモデルの関連ですが、これを反映するために私の答えを追加しました – Matthew

+0

ありがとう、今は本当にうまくいきます! しかし、おそらくあなたの隣に助けることができます。 ProductionYearの子モデルをもう1つ追加したら、二重の 'スルー'関連を作る方法は? – BazZy