До сих пор я использовал плагин act_as_taggable_on для пометки объявлений.Проблемы построения отношений между моделями
Этого плагин создает следующие таблицы:
оснащения: относится теги и объявление таблица (для маркированного элемента, он имеет поле под названием taggable_id, который я переименовывать в «announcement_id» за то, что я объясню ниже) ,
теги: имеет идентификаторы и имена тегов.
На днях я обнаружил, что у меня не было возможности получить анонсы с определенным тегом, но делать Announcement.tagged_with(tag_name)
, и я не хочу искать по имени, но для id.
Итак, поскольку я почти ничего не использую в функциональности этого плагина, я решил создать модели для таблиц тегов и тегов, чтобы выполнить это: Announcement.tags
.
отношения моделях выглядят следующим образом:
EDIT:
class Tagging < ActiveRecord::Base
belongs_to :announcement
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :taggings
has_many :announcements, :through => :taggings
end
class Announcement < ActiveRecord::Base
has_many :taggings
has_many :tags, :through => :taggings
Почему я не могу выполнить команду Announcement.tags
? Потому что, когда я пытаюсь, я получаю
неопределенных метод `тегов
Итак, что, если я хочу получить все объявления, отмеченные определенным tag_id? –
'Tag.find (tag_id) .announcements' – Chowlett
Это не работает. –