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