RAILS - Relación de modelo consigo mismo, estructura de árbol

18-04-2019

creawww.com

Crear una estructura de arbol un modelo

Se crea un modelo con un campo de hace referencia al id del modelos, parent, almacena el id del valor padre al que pertenece, si es nil es que esta en el raiz.

en la migracion


class CreatePagePcomponents < ActiveRecord::Migration[5.2]
def change
create_table :page_pcomponents do |t|
...
t.references :parent, index: true

en el modelo


class PagePcomponent < ApplicationRecord
...
has_many :children, class_name: "PagePcomponent", foreign_key: "parent_id"
belongs_to :parent, class_name: "PagePcomponent", optional: true

en la vista


- @page.page_pcomponents.where(parent_id: [nil, ""]).each do |detail|
="#{detail.pcomponent.id} - #{detail.pcomponent.name}"
-if detail.children.count > 0
-detail.children.each do |chil|
=" #{chil.pcomponent.id} - #{chil.pcomponent.name}"