Ответ 1
Самый простой способ:
class MyModel < ActiveRecord::Base
belongs_to :parent, :class_name => 'MyModel'
has_many :children, :class_name => 'MyModel', :foreign_key => 'parent_id'
end
Я хочу самоопределить модель в приложении RoR, но я точно не знаю, как это сделать. Я хочу сохранить связанный список, в котором следующий node имеет идентификатор предыдущего. как я могу это сделать? Это взаимно однозначное отношение.
Самый простой способ:
class MyModel < ActiveRecord::Base
belongs_to :parent, :class_name => 'MyModel'
has_many :children, :class_name => 'MyModel', :foreign_key => 'parent_id'
end
Я потратил некоторое время, пытаясь заставить его работать, используя 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
Также ознакомьтесь с этим руководством Райана Бейтса о самореференциальной ассоциации здесь. Ответ Hck будет работать, но для меня мне нужен стол JOIN, поэтому я использую has_many через объединение Rails. Удачи!