是否可以从机架中间件调用rails模型方法?

时间:2010-03-11 11:53:03

标签: ruby-on-rails rack

def inside_rack_middleware
  MyModel.update_attributes(:ip => request.ip)
  redirect somewhere else
end

可能吗?

2 个答案:

答案 0 :(得分:2)

在twitter上得到@ supercoco9的答案,“如果你的中间件在机架/轨道堆栈中,你可以通过AR直接使用这些模型”

答案 1 :(得分:0)

是的,您可以从中间件中访问您的AR模型。我在我的中间件中添加了byebug,并且能够访问我的模型。

编辑: - 所以,我开始编写一个Rack中间件,用于我的Rails应用程序。我试图在中间件中访问我的AR模型,但它的行为非常有趣。对于新服务器启动后提供的第一个请求,一切都会好起来的。但是之后的任何请求都会导致错误: -

  

MyMiddleware的副本已从模块树中删除但仍处于活动状态

一旦我停止从中间件访问AR模型,这个错误就消失了。 我刚开始使用Ruby / Rails,所以我不知道Ruby / Rails / Rack世界中的具体术语。但简单来说,我只能说Rack中间件只是一种插件和插件。玩任何人都可以在任何Rack应用程序中使用的库。因此,我们不应该依赖于我们的中间件中的任何Rails对象。