使用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(正如预期的那样,否则它在生产中不起作用)。
答案 0 :(得分:1)
除非在运行查询之前运行控制器和/或集成规范,否则可能不会填充
whodunnit
列。
我最终使用{p>在规格中手动设置了whodunnit
PaperTrail.controller_info[:whodunnit] = user.id
那种感觉有点违反了目的。但是我是在单元规格与功能规格中运行的,所以我认为这是唯一的方法。