Нет никакой разницы между самостоятельным объединением и любым другим типом ассоциации, когда речь идет о маршрутизации или формах.
Ваши маршруты на самом деле не заботятся о ваших моделях *. Они просто объявляют набор правил маршрутизации, которые соответствуют входящим запросам к контроллерам. Так что они меньше заботятся о ваших связях. Вы можете объявить свои маршруты RESTful так, как вы хотите, и вы как программист, который фактически определяет, как это соответствует вашим моделям. Тот факт, что таблица является самосоединением, является деталью реализации и фактически не имеет никакого отношения к тому, как вы должны структурировать приложение.
Ваши формы также не заботятся вообще. Когда вы используете f.fields_for :subordinates
, он просто вызывает метод subordinates
в вашей модели и повторяет его. Он не знает или не заботится о базовых таблицах. То же самое относится к accepts_nested_attributes
. Это своего рода абстракция, которую обеспечивают ассоциации.