Ruby on rails 两级深度上的活动管理筛选器属于关联
假设一个Ruby on rails 两级深度上的活动管理筛选器属于关联,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,假设一个人有许多房子,房子有许多门。(因此,Door有一个house\u id,house有一个person\u id字段)。我在Active Admin中有一个门的列表,其中我需要一个过滤器,允许我选择一个人,并显示该人所有房子中的所有门 ActiveAdmin.register Door do filter :knob_color filter :is_open filter :has_window filter :house_person # DOESN'T W
人
有许多房子
,房子
有许多门
。(因此,Door
有一个house\u id
,house有一个person\u 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
model表中有一个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
#id:integer
#名称:string
类Person
您需要通过house
使用has\u one
关系在Door
上注册一个人
关联,然后您可以直接添加过滤器
class Door < ActiveRecord::Base
belongs_to :house
has_one :person, through: :house
end
ActiveAdmin.register Door do
filter :person
end
classdoor
请将您的模型的所有相关行关联起来。@TimoSchilling完成。啊,这是我没有想到的想法。我会马上试试这个(如果你的答案如预期的那样有效,我会接受你的答案,如果它不起作用,我会觉得很奇怪)。出于好奇的一个问题是:如果这是一个三级深度关联,你能应用这个技术吗?你可以,但要记住,每个分离度都需要一个额外的连接。如果您的表很大,这可能会很昂贵。当我尝试此操作时,会创建筛选器,但如果我尝试运行它,则会得到一个Module::DelegationError。有人见过这个吗?