Rails: Как работают самореферентные модели has_many?

Итак, я работаю над приложением, где хочу, чтобы пользователи могли группировать объекты в "папках". В основном:

User has_many :foos

Foos не обязательно должны находиться в папке, но они могут быть. В этом случае:

Folder has_many :foos и Foo belongs_to :folder

Теперь я хотел бы иметь возможность настраивать папки, чтобы они могли быть вложенными. Я думаю, что это что-то вроде...

Folder has_many :folders

Я слышал, что такого рода самореферентные отношения не имеют большого значения, но я действительно не понимаю, как это работает. Мне не удалось выяснить, как это должно быть объявлено в модели и какие столбцы мне нужно предоставить в базе данных.

Может ли кто-нибудь предложить пример? Я также хотел бы оценить любые предложения/хедз-ап/предупреждения/уроки, которые вы могли бы предложить о настройке такого рода отношений в приложении.

Спасибо!

Ответы

Ответ 1

Checkout coreyward ответьте на вопрос здесь: Создание модели с древовидной структурой

В принципе, вы хотите добавить поле "parent_id" в таблицу папок, а затем настроить отношения в своей модели папок следующим образом:

belongs_to :parent, :class_name => "Folder"
has_many :folders, :foreign_key => "parent_id"