在我的Rails 4项目中使用paper_trail gem进行历史记录跟踪。为了应用程序的目的,我必须创建自定义纸质跟踪版本类,如here所述。
class PostVersion < PaperTrail::Version
self.table_name = :versions
end
我还有Comment
模型可以通过多态belongs_to
附加到任何其他模型:
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
现在我想向PostVersion
个实例添加注释,并执行以下操作:
class PostVersion < PaperTrail::Version
self.table_name = :versions
has_many :comments, as: :commentable
end
如果我没有获得PostVersion < PaperTrail::Version
继承,那将会很有效。但在这种情况下,我们会看到PostVersion
实例commentable_type
内部设置为"PaperTrail::Version"
而不是"PostVersion"
:
$ rails console
[1] pry(main)> PostVersion.last.comments.create(message: 'bla')
=> #<Comment id: 1, message: "bla", commentable_id: 1, commentable_type: "PaperTrail::Version">
如何让commentable_type
了解PostVersion
的继承链?