Комментарий принадлежит одной из нескольких моделей - PullRequest
0 голосов
/ 01 декабря 2011

Мой сценарий состоит в том, что есть несколько разных моделей, которые могут иметь комментарии.Попытка выяснить отношения:

Post
  has_many :comments

Update
  has_many :comments

Comment
  belongs_to EITHER :post OR :update (but not both)????

Как правильно настроить отношения комментариев?Я хочу иметь возможность звонить Post.comments и Update.comments

1 Ответ

5 голосов
/ 01 декабря 2011

Пахнет полиморфной ассоциацией :

При полиморфных ассоциациях модель может принадлежать нескольким другим моделям в одной ассоциации. Например, у вас может быть модель изображения, которая относится либо к модели сотрудника, либо к модели продукта.

Итак, вы бы хотели что-то вроде этого:

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Post < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

class Update < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

Вам нужно было бы настроить несколько вещей в базе данных, чтобы это тоже работало. См. Полиморфные ассоциации в Руководстве по ассоциациям активных записей для получения подробной информации о столбцах, которые вам понадобятся.

...