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"