使用 Paper Trail 为 Rails 管理员自定义 Whodunnit 信息
Customising Whodunnit information for Rails Admin using Paper Trail
通过将此添加到我的 application_controller
,我已经能够正确地将用户名附加到 Whodunnit 字段中以进行操作
def user_for_paper_trail
current_user ? current_user.name : 'Public user'
end
这很好用。
但是,如果用户使用 Rails 管理员进行更改,whodunnit 仍设置为用户 ID。
当通过 Rails 管理员更新记录时,是否有一种我可以调用的方法可以告诉纸质记录我想要存储哪些详细信息?
RailsAdmin
在这方面遇到了一些问题。您会发现以下内容很有用:.
此外,因为该字段应该存储 ID(即使它是一个字符串字段),我会保留 ID 并存储一些对 'Public user'
无意义的东西,例如 '0'
(引用当然是一个常数)。然后我会将 whodunnit
方法覆盖为 return 'Public user'
以防 super == '0'
.
如果您已经有一堆在 whodunnit
字段中带有 ID 的版本,或者如果您有多个同名用户,这种方法将特别有用。
P.S。要快速确认 RailsAdmin
是否完全忽略/不忽略您定义的控制器方法,只需在方法中强制引发错误。
通过将此添加到我的 application_controller
def user_for_paper_trail
current_user ? current_user.name : 'Public user'
end
这很好用。
但是,如果用户使用 Rails 管理员进行更改,whodunnit 仍设置为用户 ID。
当通过 Rails 管理员更新记录时,是否有一种我可以调用的方法可以告诉纸质记录我想要存储哪些详细信息?
RailsAdmin
在这方面遇到了一些问题。您会发现以下内容很有用:
此外,因为该字段应该存储 ID(即使它是一个字符串字段),我会保留 ID 并存储一些对 'Public user'
无意义的东西,例如 '0'
(引用当然是一个常数)。然后我会将 whodunnit
方法覆盖为 return 'Public user'
以防 super == '0'
.
如果您已经有一堆在 whodunnit
字段中带有 ID 的版本,或者如果您有多个同名用户,这种方法将特别有用。
P.S。要快速确认 RailsAdmin
是否完全忽略/不忽略您定义的控制器方法,只需在方法中强制引发错误。