Rails:单个记录,多个多态

时间:2014-02-06 06:34:28

标签: ruby-on-rails activerecord

我确信有更好的标题,对此抱歉。

我有一个Verification型号。理想情况下,会有各种其他模型类型能够将自己与单个Verification记录相关联。例如。

  • Verification(id: 1, verifiable_type: 'Reference')
    • Reference(id: 1, verification_id: 1)
    • Reference(id: 2, verification_id: 1)
  • Verification(id: 2, verifiable_type: 'Degree')
    • Degree(id: 1, verification_id: 2)
    • Degree(id: 2, verification_id: 2)

我希望:class_name上有一个简单的动态has_many选项:

class Verification < ActiveRecord::Base
  has_many :verifiables, class_name: -> { dynamic_class_name }
end

我99%确定反向关联实际上是开箱即用的。因此,使用上面的记录,以下应该没有问题:

class Reference < ActiveRecord::Base
  belongs_to :verification
end

class Degree < ActiveRecord::Base
  belongs_to :verification
end    

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

而不是

 has_many :verifiables, class_name: -> { dynamic_class_name }

替换为

 def self.varifiables(type)
   where(verifiable_type: type)
 end