我有一个表Foo,它有一个名为bar的多态belongs_to关联. foos表具有标准bar_id列.但是,我有一个整数bar_type_id列,而不是基于字符串的bar_type列.此列引用表bar_types中的id列. bar_types.name保存表示特定条形实例的类的类的名称.
Rails(理想情况下> = 2.3.10)是否允许这种类型的多态关联?
解决方法
我们通过覆盖新模块中的association_class方法并使用:extend选项包含它来完成它.还创建了一个整数到字符串映射哈希,以使事情更容易.
在config / initializers目录或您喜欢的任何位置,创建一个文件并定义哈希
INT_OBJECT_TYPE_TO_CLASSNAME = {0 => “项目”,1 => “任务”,2 => “时间表” }
class CommentObjectType < ActiveRecord::Base module ClassNamesAsInt def association_class return INT_OBJECT_TYPE_TO_CLASSNAME[restricted_object_type].constantize end end end
在comments.rb中
belongs_to :commentable,:polymorphic => true,:extend => CommentObjectType::ClassNamesAsInt