【问题标题】:How to prevent writing 'object' field in PaperTrail如何防止在 PaperTrail 中写入“对象”字段
【发布时间】:2016-11-23 17:40:27
【问题描述】:
- 我的表中有很多字段,我不想对所有列进行版本控制。
如何跳过不需要存储任何更改的列
我使用了以下内容,但它将值存储在“版本”表中。
在我的模型中
class User < ActiveRecord::Base
has_paper_trail skip: [:foo1, :foo2, :foo3]
# tried with ignore instead of skip
end
- 如何防止在“版本”表中写入对象字段。
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
paper-trail-gem
papertrail-app
【解决方案1】:
- ... 我不想对所有列进行版本控制。如何跳过不需要存储任何更改的列
skip 是正确的。在文档中,请参阅Section 2.c. Choosing Attributes To Monitor:
您可以使用 :skip 选项完全跳过字段。与 :ignore 一样,对这些字段的更新不会创建新的 PaperTrail::Version。此外,每当创建新的 PaperTrail::Version 时,这些字段都不会包含在对象的序列化版本中。
例如:
class Article < ActiveRecord::Base
has_paper_trail :skip => [:file_upload]
end
如果 skip 没有按照记录的方式工作,请提交错误报告。
Re:你的第二个问题:
- 如何防止在“版本”表中写入对象字段。
将记录插入versions 时,PaperTrail 总是在object 列中写入something。你可以配置 what 是写的,例如skip,但它总是会写 something。