тегирование has_many_polymorphs - работает на машине разработки, а не на производстве! - PullRequest
0 голосов
/ 19 ноября 2008

У меня странная проблема, когда тегирование отлично работает на моей машине для разработки , но при развертывании на производственном сервере в журнале появляется эта ошибка:

ActionView::TemplateError (undefined method `tags' for #<Person:0x98bb9d4>) on line...  

В файле production.log есть запись о том, что has_many_polymorphs загружен, поэтому плагин недоступен на рабочей машине.

Мой Google-фу не помог мне найти ответ, поэтому, если кто-нибудь знает, что может быть не так, это будет с благодарностью!

Редактировать: я должен был упомянуть, что как на производстве, так и на разработке я использую одну и ту же базу данных. Я скачал производственную версию и использовал ее на машине для разработки, и она отлично работает.

Ответы [ 4 ]

0 голосов
/ 04 января 2009

Я провел некоторое время с консультантом, отслеживая это, и в конце концов мы обнаружили, что по неизвестным причинам теги просто не загружались.

Добавив одну строку кода, всего три буквы, в конец environment.rb это было решено. Я прокомментировал это так, что мы никогда не забудем, что происходит wtf:

# Magic begins here.
# We need to force Rails to load the Tag record, or 
# has_many_polymorphs doesn't work properly. I don't know
# if there's a better fix, but this one seems reasonable. :-/
Tag

Вот и все. Я уверен, что есть элегантное и правильное решение, но это работает. Weird.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 20 ноября 2008

Я сталкивался с подобными проблемами, когда в этом поле полиморфного типа не заполнялось правильно, или когда существовали некоторые данные до добавления тега полиморфного типа. Является ли человек подклассом? содержит ли поле _type пустые значения в таблице полиморфов?

0 голосов
/ 03 декабря 2008

Здесь просто удар в темноте, но has_many_polymorphs изначально не добавляет функциональности тегов к вашим моделям. Вместо этого вы используете генератор для создания модуля расширения тегов, который входит в lib / tagging_extensions.rb. В файле модуля есть вспомогательные методы, которые добавляют функции тегирования, построенные поверх базовой функциональности has_many_polymorphs.

Итак, возможно ли, что у вас установлен плагин, а не файл расширений тегов?

0 голосов
/ 19 ноября 2008

ограничение развертывания: миграции

...