【问题标题】:Adding ActiveRecord validations to PaperTrail's Version model?将 ActiveRecord 验证添加到 PaperTrail 的版本模型?
【发布时间】:2016-12-12 15:48:56
【问题描述】:

我正在尝试向 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

    ...

【问题讨论】:

    标签: ruby paper-trail-gem


    【解决方案1】:

    尝试自定义版本类。请参阅文档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! 是个好主意。不知道为什么这对你不起作用。希望这是一种解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      相关资源
      最近更新 更多