gpt4 book ai didi

ruby-on-rails-3 - 将 user_id 存储在 paper_trail 版本表中

转载 作者:行者123 更新时间:2023-12-01 02:33:22 26 4
gpt4 key购买 nike

我正在使用 paper trail 来审计对数据的更改,除了 paper_trail 默认存储的“whodunnit”列之外,我还想存储当前用户的 user_id。

我在修改版本迁移以添加 user_id 列时没有遇到任何问题。但是我还没有想出一种简单的方法来从我的应用程序中的各种模型中设置该列。

看起来这应该有效:

has_paper_trail :meta => { :user_id  => current_user.id
}

而且,我认为如果我可以访问模型中的 current_user,它可能会起作用。但我没有。在研究了如何在我的模型中访问 c​​urrent_user 之后,我看到这里有一个哲学辩论。不过这不是我的问题。

所以我正在考虑使用像 sentient_user 或 sentient_model 这样的 gem 来让我访问我的模型中的 current_user ,这样我就可以用上面的代码来设置它。

但是,对于我在这里尝试做的小事来说,添加这些 gem 似乎很复杂。我想知道是否有更简单的方法。

将采取行动的人的 user_id 添加到版本表的最简单方法是什么?

最佳答案

current_user本身不存在于模型中,它出现在 Controller 中。因此,适用标准方法:

class ApplicationController < ActionController::Base
def user_for_paper_trail
current_user if user_signed_in?
end

def info_for_paper_trail
{ user_id: current_user.id } if user_signed_in?
end
end

# config/initializers/paper_trail.rb
class Version < ActiveRecord::Base
attr_accessible :user_id
end

关于ruby-on-rails-3 - 将 user_id 存储在 paper_trail 版本表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11734651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com