Ruby on Rails Add a self reference


Example

A self reference can be useful to build a hierarchical tree. This can be achieved with add_reference in a migration.

class AddParentPages < ActiveRecord::Migration[5.0]
  def change
    add_reference :pages, :pages
  end
end

The foreign key column will be pages_id. If you want to decide about the foreign key column name, you have to create the column first and add the reference after.

class AddParentPages < ActiveRecord::Migration[5.0]
  def change
    add_column :pages, :parent_id, :integer, null: true, index: true
    add_foreign_key :pages, :pages, column: :parent_id
  end
end