我已經計劃構建一個複雜的邊欄菜單,其中包含多層嵌套,它顯示指向不同類型頁面的鏈接。因此,這個模型屬於同一模型的模型的實例Rails
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]
我接受這個答案,因爲外鍵正確設置,並且has_many在其中。 –