我有一个与另一个模型“WindowItems”具有has_many关系的模型“Window”。 WindowItems具有自引用关系(因此它可以嵌套自己的子项)。
我有一个像这样的窗口的activeadmin资源:
show :title => :name do
attributes_table do
row :name
row :column_position
row :window_type
row :column_count
row :active
row :page_position
row :collapsible
row :icon_id
row :created_at
row :updated_at
end
div :class => "accordion" do
if window.window_items.count > 0
panel "Window Items (#{window.window_items.count})" do
table_for window.window_items do
column "Name" do |a|
link_to a.name, admin_window_item_path(a.id)
end
column :active
column :link
column :icon
column :window
end
end
end
end # end accordion
端
现在,这是显示所有窗口项目,但我只希望它显示父窗口项目(关闭子窗口项目)。
如何过滤“窗口项目阻止”面板上显示的记录?
由于
答案 0 :(得分:0)
我认为如果你将一个parent_id添加到你的WindowItem模型中,你的问题就会很容易解决。所有嵌套的子节点都有parent_id引用其父级,其中顶级项目没有parent_id。
答案 1 :(得分:0)
我终于明白了。我刚刚在模型中添加了一个范围,然后引用了该范围。
范围:
scope :is_parent, where('parent_window_item_id IS NULL || parent_window_item_id = ""')
并在activeadmin资源中:
table_for window.window_items.is_parent do
....
end