У меня проблема с тем, что имя класса, хранящееся в полиморфных отношениях, переворачивается, использует ли оно полное имя в пространстве имен или нет. Я пытаюсь получить is_taggable - это работа с моим текущим приложением (https://github.com/ejlevin1/is_taggable); однако, как показано ниже, оно не всегда подчиняется ActiveRecord::Base.store_full_sti_class = false
.
Вот мой пример:
ruby-1.9.2-p180 :001 > i = BOSS::Model::Interest.includes(:taggings).first
...
Tagging Load (40.7ms) SELECT [taggings].* FROM [taggings] WHERE ([taggings].[taggable_id] = 1 and [taggings].[taggable_type] = 'Interest')
...
ruby-1.9.2-p180 :003 > BOSS::Model::Interest.first.taggings
...
Tagging Load (43.8ms) SELECT [taggings].* FROM [taggings] WHERE ([taggings].taggable_id = 1 AND [taggings].taggable_type = N'BOSS::Model::Interest')
Обратите внимание, как различаются типы тегов в зависимости от способа доступа к ассоциации has_many :taggings
на моем объекте?
Вы можете увидеть соответствующие классы здесь: https://github.com/ejlevin1/is_taggable/tree/master/lib
Все, что я делаю в своем приложении, это присоединяю это к классу модели, указав:
module BOSS
module Model
class Interest < ActiveRecord::Base
is_taggable :category
end
end
end
У кого-нибудь есть какие-либо рекомендации или мысли ??