将ActiveRecord验证添加到PaperTrail的版本模型中?

时间:2016-12-12 15:48:56

标签: ruby paper-trail-gem

我试图向PaperTrail :: Version添加验证,以防止敏感数据存储在版本表中。如果您忘记在模型中清理has_paper_trail调用,那么您的想法就会出现很多明显的错误。

如果我在config / initializers / paper_trail中添加自定义验证器,它可以工作......一段时间。然后PaperTrail开始使用其默认行为,我的方法未定义。

示例代码:

PaperTrail::Rails::Engine.eager_load! 

module PaperTrail
  class Version

    # Ensure no sensitive values end up in the versions table
    validate  :prohibited_attributes

    ...

1 个答案:

答案 0 :(得分:0)

尝试自定义版本类。请参阅文档section 6.a. Custom Version Classes

  

6.A。自定义版本类

     

您可以使用:class_name指定自定义版本子类   选项:

class PostVersion < PaperTrail::Version
  # custom behaviour, e.g:
  self.table_name = :post_versions
end

class Post < ActiveRecord::Base
  has_paper_trail :class_name => 'PostVersion'
end

使用PaperTrail::Rails::Engine.eager_load!是一个好主意。不知道为什么那对你不起作用。希望这是一种解决方法。

快乐(纸)小径!