我们模型的whodunnit
值是一个字符串 - 例如"22"
与User
id
22
一样。
问题是我们使用User
和AdminUser
模型来跟踪whodunnit。因此,无法判断用户是否进行了更改,或者是由管理员进行更改:
def user_for_paper_trail
current_user || current_admin_user
end
我对PaperTrail有点新鲜,但是我的工作方式完成了他们的文档并无法提出任何解决方案。这可能是一个奇怪的请求,但我喜欢像任意字段这样的东西,我们可以为whodunnit type
添加一个值,如果这是有道理的。或者只是根据控制器跟踪某些更改的方法(在这种情况下可以使用,因为我只跟踪通过AdminPanel进行的更改)。
感谢您的任何建议或指导。
答案 0 :(得分:1)
由于以下两个原因之一,PaperTrail正在存储id
:
.id
方法返回的值调用your user_for_paper_trail
。或
.id
方法的结果手动调用user_for_paper_trail
。由于User
或AdminUser
id
并非普遍唯一,因此您应该存储不同的值。
whodunnit
值可以是您决定的任何字符串。如果您有唯一标识符可用于区分Users
和AdminUsers
,则应存储该值。
我认为其中一个选项可以解决您的问题:
如果email
在两个用户模型之间是唯一的,请存储电子邮件而不是ID。
如果email
不唯一,您可以存储一个显示用户模型类型和ID的字符串(例如'User: 1'
和/或'AdminUser: 1'
),然后你去获取whodunnit
值,你可以解析用户模型和id的字符串,然后根据需要使用这些信息。
了解PaperTrail details how to find out who was responsible for a change的方式并提出类似的自定义解决方案(或another option)。