Можно ли установить связь между моделью ActiveRecord и моделью плагина?

Я использую ruby ​​on rails 2.3.8, и я установил плагин actions_as_taggable_on для пометки объявлений, и все было хорошо, пока я не обнаружил, что у меня нет простого и аккуратного способа получить все объявления, помеченные определенным идентификатором (единственный метод Я обнаружил, что это Tag.tagged_with (tag_name)).

Итак, я просто хотел связать модель тегов плагина с созданной мной моделью тегов (ActiveRecord), представляющей таблицу тегов, включенную в плагин.

Возможно ли это?


person Brian Roisentul    schedule 18.06.2010    source источник


Ответы (1)


Это должно быть возможно, если они обе модели ActiveRecord.

Чтобы определить отношения в модели плагина, вам нужно будет выполнить метапрограммирование где-нибудь в библиотеке. Вы можете сначала прикрепить его в конец файла environment.rb, чтобы поэкспериментировать.

ModelName.class_eval do
  has_many :announcements
end

В частности, это может сработать, а может и не сработать, но это основная идея.

Если метапрограммирование окажется слишком сложным, вы всегда можете просто сделать (делая здесь предположения о схеме, я не использовал AAT несколько лет):

Taggings.find_by_tag_id_and_user_id (@ tag.id, @ user.id,: include =>: user) .map {| t | t.user)}

person John Bachir    schedule 18.06.2010
comment
У меня есть модель под названием Announcement, и я бы хотел, чтобы все объявления были помечены определенным tag_id. Единственный метод, который я нашел для этого, - это tagged_with (tag_name), а не tag_id в качестве аргумента. Я не могу рассчитывать на то, что у каждого тега разные имена, я хочу найти их по идентификатору. - person Brian Roisentul; 19.06.2010
comment
k, я приукрасил свой ответ, надеюсь, это будет полезно. - person John Bachir; 20.06.2010