假设Person
有多个House
而House
有多个Door
。 (所以Door
有一个house_id
,而且House有一个person_id
字段。我在Active Admin中有一个门列表,其中我想要一个允许我选择一个人的过滤器,并向我展示所有这些人的房子。
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
Person
模型表中有一个name
字段,因此ActiveAdmin应该可以选择该字段。
我该怎么做?
根据要求,我的情况在模特中重新定义。
# 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
答案 0 :(得分:8)
您需要通过person
使用Door
关系在has_one
上注册house
关联,然后您可以直接添加过滤器。
class Door < ActiveRecord::Base
belongs_to :house
has_one :person, through: :house
end
ActiveAdmin.register Door do
filter :person
end