Добавляю теги к нескольким моделям (сообщения, статьи, фотографии и т. Д.). Мне известны плагины для маркировки рельсов, но я предпочитаю не использовать их, поскольку они не совсем соответствуют моим конкретным потребностям.
Я знаю, что типичный способ реализации поддержки полиморфных тегов - использовать 2 таблицы Tags, Taggings и настроить соответствующие отношения has_many: through.
Но, как я думаю об этом немного больше - и вот мой вопрос: нужна ли таблица тегов. Есть ли недостатки в использовании только таблицы Taggings и есть ли у меня такие отношения:
Post, Article, Photo
has_many :taggings
Taggings (attributes)
taggable_type
taggable_id
tag_name
Тогда мне просто нужно будет самому управлять вставкой / удалением тегов. По сути, я хотел бы просто сохранить атрибут tag_name непосредственно в таблице Taggings, а не в таблице Tags.
Преимущества заключаются в том, что исключается управление таблицей, нет объединений для получения имен тегов (хотя я буду выполнять много операций SELECT DISTINCT).
Не могли бы вы поделиться своими мыслями об этом дизайне?
Спасибо.