使用纸质追踪

时间:2018-01-20 22:58:17

标签: ruby-on-rails rspec paper-trail-gem

使用Paper Trail,我已经为我的应用构建了一个更改跟踪元素。在生产中很有效。一个方面是它使用' whodunnit'字段以提取用户名以显示哪个用户进行了更改。

我查看了文档(https://github.com/airblade/paper_trail),我看到了关于rspec和whodunnit的符号,但我并不认为该引用意味着' whodunnit'字段不可用,只是在测试之间没有

详细说明: 我正在使用rspec的测试助手,我有

的rspec功能测试设置
"..., versioning: true do"

此外,在运行测试时的调试中,我可以看到事件/更改的所有其他字段都存在并保存在数据库中,只有whodunnit没有被保存。有趣的是,我只是在测试中遇到问题;生产中没有问题,在那里工作正常,只是没有在测试中工作。当然,我有

before_action :set_paper_trail_whodunnit

设置(在我的应用程序控制器中,不是特定的控制器,但我移动它只是为了看它是否有所作为,并且毫不奇怪,它没有)。

编辑: 我应该提到我检查确认有一个专栏' whodunnit'测试运行时在测试数据库中。此外,控制器中还有一个方法current_user(正如预期的那样,否则它在生产中不起作用)。

1 个答案:

答案 0 :(得分:1)

我是从PaperTrail issue on Github

找到的
  

除非在运行查询之前运行控制器和/或集成规范,否则可能不会填充whodunnit列。

我最终使用{p>在规格中手动设置了whodunnit

PaperTrail.controller_info[:whodunnit] = user.id

那种感觉有点违反了目的。但是我是在单元规格与功能规格中运行的,所以我认为这是唯一的方法。