Полиморфные и HABTM отношения для системы тегов - PullRequest
0 голосов
/ 08 мая 2011

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

  • Теги уникальны
  • Теги могут принадлежать фотографии, объекту или обоим

Rails предлагает полиморфную ассоциацию, которая приводит к тому, что у тегов есть отношение own_to как с Photo, так и с Object; однако он не позволяет принадлежать тегу принадлежащему обоим .

Эту проблему можно решить, имея два независимых отношения HABTM для тегов к фотографиям и тегов для объектов.

Мне было интересно, есть ли более эффективный способ достичь этого; или, может быть, я подхожу к проблеме с неправильного направления?

1 Ответ

0 голосов
/ 08 мая 2011

Теги - это способ сказать что-то о чем-либо.

Возможно, не имеет смысла использовать один набор тегов, чтобы что-то сказать о каждом виде вещи.Я могу представить себе такие теги, как «1024x768» и «съемка с камеры Olympus», полезные, если вы пытаетесь что-то сказать о фотографии, но не очень полезные, если вы пытаетесь что-то сказать об объекте.

Допустим, я использую тег типа "синий" для обозначения как фотографии, так и объекта.Означает ли {photo_id, "синий"} то же самое, что и {object_id, "синий"}?Я не думаю, что это так.

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

...