дизайн модели для объекта, который может принадлежать нескольким другим объектам? - PullRequest
4 голосов
/ 15 февраля 2012

Я хочу построить простое приложение с 3 типами объектов:

  • Статья (1-й день в RoR, почему PHP все еще крут, RoR против PHP)
  • Автор (Боб, Стив, Джен)
  • Теги (RoR, PHP)

Автор пишет статью и делает соответствующие теги.

так:

author has many articles; article belongs to author

Но как насчет тегов? Я хочу, чтобы и статьи, и авторы имели теги.

Я могу представить, что:

author has many tags; article has many tags

А как насчет объявления модели тегов?

tag belongs to authors; tag belongs to articles

Будут ли оба принадлежат друг другу мешать друг другу?

Боюсь, этот тег потребует от автора и родителя статьи. и в случае, когда у него есть оба типа родителей, удаление одного приведет к удалению тега, а другого - из-за ограничений внешнего ключа в базе данных.

Заранее спасибо!

1 Ответ

6 голосов
/ 15 февраля 2012

Вы ищете полиморфные ассоциации :

class Tag < ActiveRecord::Base
  belongs_to :taggable, :polymorphic => true
end

class Author < ActiveRecord::Base
  has_many :tags, :as => :taggable
end

class Article < ActiveRecord::Base
  has_many :tags, :as => :taggable
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...