Самоссылочные ассоциации (Ruby on Rails) - PullRequest
2 голосов
/ 24 сентября 2010

Я хочу создать систему, позволяющую пользователям комментировать посты, где комментарии также могут иметь ответы. Поскольку я не могу установить самореферентные отношения с HABTM, я провел небольшое исследование и понял, что мне следует поступить так:

Post
  has_many :comments
end

Comment
  belongs_to :user
  belongs_to :post
  has_many :replies, :class_name => 'Comment'
end

Я знаю, что это не на 100% правильно (вот почему я спрашиваю). Если бы кто-нибудь мог посоветовать мне, как установить такие отношения и как мне нужно было бы создать миграцию, я был бы признателен !! Спасибо!

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

Самое простое решение для этого - просто использовать плагин acts_as_tree .Довольно просто увидеть, как это реализовано, но в основном вам нужно добавить самоссылочный belongs_to, а также столбец parent_id в вашей модели.(Комментарий с нулевым parent_id является комментарием верхнего уровня; не является ответом.)

1 голос
/ 24 сентября 2010

Если вы также можете ответить на ответ, у вас будет дерево комментариев.Поэтому я предлагаю вам использовать acts_as_tree:

Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :post
  acts_as_tree :order => 'created_at'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...