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 を追加し、モデルにアクセスできました。

編集:- それで、Rails アプリで使用する Rack ミドルウェアの作成を開始しました。ミドルウェアで自分の AR モデルにアクセスしようとしましたが、その動作はかなりおかしなものでした。サーバーの新規起動後に提供される最初のリクエストでは、すべてがうまくいきます。しかし、その後のリクエストはすべてエラーになりました:-

MyMiddleware のコピーがモジュール ツリーから削除されましたが、まだアクティブです

このエラーは、ミドルウェア内から AR モデルへのアクセスを停止するとすぐに消えました。Ruby/Rails を始めたばかりなので、Ruby/Rails/Rack の世界の特定の用語がわかりません。しかし、簡単に言えば、Rack ミドルウェアは、誰でも任意の Rack アプリで使用できる一種のプラグ アンド プレイ ライブラリにすぎません。したがって、ミドルウェア内のいかなる種類の Rails オブジェクトにも依存するべきではありません。

于 2016-09-02T09:03:16.927 に答える