如何解决PaperTrail如何获取原始版本-当我们忽略属性时
请建议我实现以下目标-
用例:
class Widget
# attributes :name,:address
has_paper_trail ignore: [:name]
end
步骤1:Widget.create(name: "test1",address: "address1")
将创建对象为nil的版本1
第2步:当我更新忽略字段widget.update(name: 'test2')
时,它将不会创建任何版本
第3步:widget.update(address: 'address2')
字段将创建版本2
使用此功能时-widget.versions.second&.reify || widget
返回widget(name: "test2",address: "address1") not widget(name: "test1",address: "address1")
我想在创建widget(name: "test1",address: "address1")
后获得原始版本。
谢谢!
解决方法
我知道有人在讨论在纸质记录中添加original_version
方法,但是我不知道这是否发生了,或者您的应用程序版本中是否包含该方法。
您随时可以
widget.versions.second&.reify || widget
这将返回从第一个修改中进行验证的结果,但是如果没有第一个修改,它将仅按原样返回小部件(因为没有任何更改)。
,好,那真是多毛。我能想到的唯一方法是重写更新方法...
def update(arguments = {})
if (arguments.keys - [:name]).present? && !arguments.has_key?(:name)
arguments[:name] = name.dup
end
super(arguments)
end
每当更新非名称值时,这将强制记录:name。
那你就可以做
widget.versions.second&.reify || widget
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。