类的多态has_many关联,它通过父模型从ActiveRecord :: Base继承

时间:2014-05-19 11:53:41

标签: ruby-on-rails ruby-on-rails-4

在我的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的继承链?

0 个答案:

没有答案