Ale*_*lex 3 ruby-on-rails acts-as-audited devise
嘿,我想一起使用 Devise 和 act_as_audited 但是当我尝试使用 -
class ApplicationController < ActionController::Base
audit Candidate
protected
def current_user
@user = User.find(user_session)
end
Run Code Online (Sandbox Code Playgroud)
我收到这个错误。
stack level too deep
Run Code Online (Sandbox Code Playgroud)
我需要以不同的方式做吗?
谢谢
这是一个古老的问题,但仍然抬起它丑陋的头。这是一个不同的,可能更合适的解决方法,它对我有用。
首先,正如其他人所描述的,当使用audise(以前称为acts_as_audited)和devise(以及潜在的其他身份验证gems)时会发生错误,然后当您审计Devise 在您的用户模型(last_sign_in_at、last_sign_in_ip 等)上使用的任何列时,就会发生错误。
@DGM 的解决方法只是告诉 Audited 不要审核此更改,这可能对您有用。但是,在我的应用程序中,我需要审核该更改。
Audited 允许您指定用于 current_user 的不同方法。
在应用程序控制器中,添加新方法,引用 current_user实例变量。
def my_cool_method
@current_user
end
Run Code Online (Sandbox Code Playgroud)
然后,在 config/initializers/audited.rb 中,告诉 Audited 使用您的新方法:
Audited.current_user_method = :my_cool_method
Run Code Online (Sandbox Code Playgroud)
通过此更改,Audited 仍将审核更改,但不会尝试设置审核的用户(进行更改的人)- 那将为零。
与 DGM 的替代解决方案相比,此更改的另一个优点是我们不会覆盖 Devise 的 current_user 方法,该方法类似于猴子补丁,因为它可能会在以后导致意想不到的后果。
| 归档时间: |
|
| 查看次数: |
1890 次 |
| 最近记录: |