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

那可能吗?

4

2 回答 2

3

通过 Twitter 上的@supercoco9 获得了答案,“如果您的中间件位于机架/导轨堆栈中,您可以直接通过 AR 使用模型”

于 2010-03-12T12:47:16.743 回答
0

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

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

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

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

于 2016-09-02T09:03:16.927 回答