Say a Person has many House and House has many Door. (So Door has a house_id and House has a person_id field). I have a list of Doors in Active Admin, in which I want a filter that allows me to choose a person, and show me all doors in all of that person's houses.
ActiveAdmin.register Door do
filter :knob_color
filter :is_open
filter :has_window
filter :house_person # DOESN'T WORK
filter :house_person_name # DOESN'T WORK
The Person model table has a name field, so ActiveAdmin should be able to pick that up.
How do I do this?
As requested, my situation rephrased in models.
# id: integer
# name: string
class Person < ActiveRecord::Base
has_many :houses
end
# id: integer
# person_id: integer
class House < ActiveRecord::Base
belongs_to :person
has_many :doors
end
# id: integer
# house_id: integer
# knob_color: string
# is_open: boolean
# has_window: boolean
class Door < ActiveRecord::Base
belongs_to :house
end
You need to register a person association on Door using a has_one relation through house, and then you can add the filter directly.
class Door < ActiveRecord::Base
belongs_to :house
has_one :person, through: :house
end
ActiveAdmin.register Door do
filter :person
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With