能否从Rack中间件调用Rails模型方法?

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

这是可能的吗?

这个问题很糟糕还是没有人知道? - Christian
2个回答

3

我在 Twitter 上通过 @supercoco9 得到了答案:“如果你的中间件在 Rack/Rails 栈中,你可以通过 AR 直接使用模型”。


0

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接