使用Paper Trail自​​定义Rails管理员的Whodunnit信息

时间:2015-06-30 12:19:05

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

我已经能够将用户的名称正确地附加到Whodunnit字段中,以便通过将其添加到我的application_controller

来执行操作
def user_for_paper_trail                                                                                     
    current_user ? current_user.name : 'Public user'                                                           
end

这很好用。

如果用户使用Rails Admin进行更改,则whodunnit仍设置为用户ID。

是否有一种我可以调用的方法,可以通过Rails Admin更新记录时我想要存储的详细信息?

1 个答案:

答案 0 :(得分:1)

RailsAdmin遇到了一些问题。您会发现以下内容:Display custom label for User in rails_admin paper_trail history

另外,因为该字段应该存储ID(即使它是一个字符串字段),我会保留ID并为'Public user'存储无意义的内容,例如'0'(由a引用)当然是恒定的)。然后我会覆盖whodunnit方法,以便在'Public user'的情况下返回super == '0'

如果您的whodunnit字段中已有许多带ID的版本,或者您有多个同名用户,则该方法会特别有用。

P.S。要快速确认RailsAdmin完全忽略/不忽略您定义的控制器方法,只需强制引发方法中的错误。