gpt4 book ai didi

ruby-on-rails - 是否在观察者中访问 session 是个好主意?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:22 25 4
gpt4 key购买 nike

我想在我的 Ruby on Rails 应用程序中记录用户的操作。

到目前为止,我有一个模型观察器,它在更新和创建后将日志插入到数据库中。为了存储哪个用户执行了记录的操作,我需要访问 session ,但这是有问题的。

首先,它打破了MVC模型。其次,技术范围从黑客到古怪,甚至可能将实现绑定(bind)到 Mongrel 服务器。

什么是正确的方法?

最佳答案

嗯,这是一个棘手的情况。您几乎必须违反 MVC 才能使其正常工作。

我会做这样的事情:

class MyObserverClass < ActiveRecord::Observer
cattr_accessor :current_user # GLOBAL VARIABLE. RELIES ON RAILS BEING SINGLE THREADED

# other logging code goes here
end

class ApplicationController
before_filter :set_current_user_for_observer

def set_current_user_for_observer
MyObserverClass.current_user = session[:user]
end
end

它有点 hacky,但并不比我见过的许多其他 core rails 东西更 hacky。

要使其成为线程安全的(这仅在您运行在 jruby 上时才重要),您需要做的就是将 cattr_accessor 更改为适当的方法,并将其数据存储在线程本地存储中

关于ruby-on-rails - 是否在观察者中访问 session 是个好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/133558/

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