在 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。
当我转到 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。