【发布时间】:2016-01-28 21:31:31
【问题描述】:
paper_trail gem 跟踪版本,并且做得很好。但是,我注意到了一种极端情况。对于大多数对象,如果您已登录,应用程序控制器会设置 whodunnit,然后在该会话期间创建的所有对象都有一个版本,根据登录者记录“whodunnit”。
有趣的情况是没有人登录,因为新用户正在注册。用户是用“nil”whodunnit 创建的,这是错误的,因为实际上用户是他们自己创建的。
当然,whodunnit在用户记录保存之前是无法知道用户的id的。这个我知道。
但是,这会在以后产生冲突,因为各种批处理作业也会修改用户记录,并且不在网络会话中,也会创建带有 nil whodunnit 记录的版本。
现在我不知道是谁创建了用户 - 一些批量导入过程,还是用户。
我正在考虑各种解决方案,比如在 Papertrail::Versions 表中翻找该对象并修复 whodunnit,但这似乎很不干净。
有什么建议吗?
【问题讨论】:
标签: ruby-on-rails paper-trail-gem