Я обнаружил, что мне пришлось внести небольшое изменение в решение @ эквивалента8, чтобы оно работало для Rails 5 (5.1.4):
class Category < ActiveRecord::Base
has_many :children, :class_name => "Category", foreign_key: 'parent_id'
belongs_to :parent, :class_name => "Category", foreign_key: 'parent_id', :optional => true
end
Без объявления foreign_key
Rails пытается найтидочерние элементы от organization_id вместо parent_id и chokes.
Rails также блокируется без объявления :optional => true
в ассоциации own_to, так как assign_to требует, чтобы экземпляр был назначен по умолчанию в Rails 5. В этом случае вы должны иметьназначить бесконечное количество родителей.