Мы сделали это путем переопределения метода association_class
в новом модуле и включили его, используя опцию :extend
.Также создано целое число для хэширования строкового отображения, чтобы упростить процесс.
В каталоге config/initializers
или в любом другом месте создайте файл и определите хэш INT_OBJECT_TYPE_TO_CLASSNAME = { 0 => "Project", 1 => "Task", 2 => "Timesheet" }
class CommentObjectType < ActiveRecord::Base
module ClassNamesAsInt
def association_class
return INT_OBJECT_TYPE_TO_CLASSNAME[restricted_object_type].constantize
end
end
end
В комментариях.rb
belongs_to :commentable, :polymorphic => true, :extend => CommentObjectType::ClassNamesAsInt