2011-03-04 9 views
4

レール3のモデルから実際のリクエストを取得する必要があります。処理されたリクエストは必ずしもあるとは言えませんが、もしあればリクエストにアクセスしたいと思います。どのように到達することが可能です。コントローラの場合、リクエストメソッドが適所にあります。しかし、今私は少し "低レベル"から要求にアクセスする必要があります。あなたは私にRailsでそれを行うための手がかりを与えることができますか?レール3のモデルから実際のHTTPリクエストを取得する方法は?

答えて

21

リクエストをスレッドに格納して、どこにでもアクセスできます。 これはMVC規約をこのように破るべきではないので、モデルが本当に依存しているかどうかを常に確認する必要があります。

が、どこでもあなたの要求を利用できるようにするハックはapplication_controller.rbのために次のようになります。

before_filter :store_request_in_thread 

def store_request_in_thread 
    Thread.current[:request] = request 
end 

し、モデルのsomemodel.rbまたは本当にどこでもあなたがすでに存在する要求を期待して、あなただけのリクエストにアクセスすることができます:

def something 
    request = Thread.current[:request] 
end 
+3

ありがとうございます。ちょっとハッキーかもしれませんが、現時点では、ActiveRecordがリクエストの発信元となるドメイン名に基づいて異なる動作をする方法はありません。私はミドルウェアに現在のリクエストをキャッチして保存することを考えています。 – fifigyuri

関連する問題