Как я могу справиться с рубинами на рельсах?

Я хочу самоопределить модель в приложении RoR, но я точно не знаю, как это сделать. Я хочу сохранить связанный список, в котором следующий node имеет идентификатор предыдущего. как я могу это сделать? Это взаимно однозначное отношение.

Ответы

Ответ 1

Самый простой способ:

class MyModel < ActiveRecord::Base
  belongs_to :parent, :class_name => 'MyModel'
  has_many :children, :class_name => 'MyModel', :foreign_key => 'parent_id'
end

Ответ 2

Я потратил некоторое время, пытаясь заставить его работать, используя Rails 3.2.14

Предложение документации для ассоциативных ассоциаций не работает для ассоциаций belongs_to. Добавление внешнего ключа устранило проблему.

Class User < ActiveRecord::Base
  has_many :invitees, class_name: 'User', foreign_key: :invited_by
  belongs_to :host, class_name: 'User', foreign_key: :invited_by
end

Ответ 3

Также ознакомьтесь с этим руководством Райана Бейтса о самореференциальной ассоциации здесь. Ответ Hck будет работать, но для меня мне нужен стол JOIN, поэтому я использую has_many через объединение Rails. Удачи!