在 rails_admin paper_trail 历史记录中显示用户的自定义标签

Display custom label for User in rails_admin paper_trail history

当我转到 rails_admin 中的 paper_trail 历史页面时,我在用户列 (#<User:0x007f59a9...) 中看到了用户对象。有没有办法将其配置为使用其中一个用户属性?我以为我可以使用 object_label_method 但我似乎没有任何运气。

更新:

我认为这纯粹是一个显示问题,但 paper_trail 实际上是在版本 table 的 whodunnit 列中存储像 #<User:0x007f59a9... 这样的字符串,而不是 ID。我在 ApplicationController 中覆盖了 user_for_paper_trail,虽然这在我的前端应用程序中成功记录了带有用户 ID 的版本,但在 rails_admin 中却没有。根据 this thread,rails_admin 应该看到我的自定义方法,因为 "RailsAdmin::ApplicationController inherits from your ::ApplicationController"。关于为什么会发生这种情况以及如何让 paper_trail 存储用户 ID 有什么想法吗?

更多挖掘表明,这是 gem 的某些版本组合的已知问题。 Here is a recent rails_admin pull request that addresses it. Here 是对问题的更完整描述。

目前,我正在通过将以下代码放入 config/initializers/rails_admin_user_for_paper_trail.rb:

来修补修复程序
RailsAdmin::ApplicationController.module_eval do
  def user_for_paper_trail
    _current_user.try(:id) || _current_user
  end
end

作为参考,我使用的是 paper_trail 3.0.6、rails_admin 0.6.6 和 Rails 4.2.0。