两级深度belongs_to关联上的Active Admin过滤器

时间:2015-09-22 11:30:28

标签: ruby-on-rails activeadmin

假设Person有多个HouseHouse有多个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

1 个答案:

答案 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