def inside_rack_middleware
MyModel.update_attributes(:ip => request.ip)
redirect somewhere else
end
那可能吗?
def inside_rack_middleware
MyModel.update_attributes(:ip => request.ip)
redirect somewhere else
end
那可能吗?
通过 Twitter 上的@supercoco9 获得了答案,“如果您的中间件位于机架/导轨堆栈中,您可以直接通过 AR 使用模型”
是的,您可以从中间件中访问您的 AR 模型。我在中间件中添加了 byebug 并且能够访问我的模型。
编辑:- 所以,我开始编写一个 Rack 中间件以在我的 Rails 应用程序中使用。我试图在中间件中访问我的 AR 模型,但它的行为很有趣。在新的服务器启动后服务的第一个请求一切都会好起来的。但是之后的任何请求都会导致错误:-
MyMiddleware 的副本已从模块树中删除,但仍处于活动状态
一旦我停止从中间件中访问 AR 模型,这个错误就消失了。我刚开始使用 Ruby/Rails,所以我不知道 Ruby/Rails/Rack 世界中的具体术语。但简而言之,我只能说 Rack 中间件只是一种即插即用的库,任何人都可以在任何 Rack 应用程序中使用它。所以我们不应该依赖中间件中的任何一种 Rails 对象。