【发布时间】:2017-04-20 08:34:06
【问题描述】:
我计划构建一个具有多层嵌套的复杂侧边栏菜单,用于显示指向不同类型页面的链接。因此模型
class MenuItem < ApplicationRecord
belongs_to :linkable, polymorphic: true
end
目前显示如下:
- 链接 1
- 链接 2
- 链接 3
现在,要引入一个子链接,我想保留在同一个模型中,但结果如下:
- 链接 1
- 链接一个
- 链接 b
- 链接 2
- 链接c
- 链接 3
我不想创建另一个模型或继承,所以我最初的计划是通过向 MenuItem 模型添加更多字段来实现:
is_subpage:boolean
show_under:integer
因此,要获得第二层并对其进行迭代,我需要执行以下操作:
MenuItem.where(subpage: true, show_under: self.id)
但也许有更好的方法来建立关系?
有点像
belongs_to :self, as: :subpage
这会让我做的
MenuItem.subpages => [1, 2, 3]
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5