2011-07-08 3 views
1

Railsで特異リソースがどのように機能するか理解できません。問題がある場合Railsで特異リソースを理解する

特に、セッション全体でRailsアプリケーションにアクセスすると、Railsはどの特異なものが私のものであるかを知ることができます。 Railsアプリケーションは、ユーザーが多いときに競合がないことをどのように確認しますか?

サーバは何らかの形でリクエスト(IPに基づいて)を一意のRailsプロセスにマッピングしますか?また、各プロセスは単一のIPに対応しています。以前は未知のIPが新しいRailsプロセスに接続するときに開始されますか?

もしそうなら、私は同じマシン上で複数のユーザー(異なるブラウザを使用して)としてログインすることはできますか?

Webrickがシングルスレッドの場合、Webrickを実行しているローカルホスト上で、複数の単一リソースで複数のセッションに入ることはできますか?

私が読むことができるリソースへの説明やリンクは高く評価されます。

答えて

2

特異リソースは、Railsが設定するルートを変更します。したがって、基本的にルートから:idをすべて削除します(そして、indexルートを削除します。これは、単一リソースには意味がなく、現在はshowルートと同じです)。

Railsは単なるリソースでは何もしません。 あなたはあなたのアプリでそれを世話する必要があります。通常は、セッションを使用してIDを格納することでこれを行います。あなたのセッションはブラウザに送るクッキーを、ファイル、DB、またはmemcacheのようにRailsに格納されたセッションインスタンスにマップするので、サーバ上の複数のアプリケーションプロセスはすべて共通のセッションストアを使用します。

したがって、たとえば - ユーザがログインした後、あなたは彼のセッションでuser_idを格納しますし、あなたの単数リソースのコントローラでbefore_filter(と、それを必要とする他のすべてのコントローラ)は取得していますuser_idをセッションから取得し、標準のActiveRecordファインダを使用してUserレコードを取得します。

複数のユーザーとしてログインする場合は、user_idと同様にスコープ/名前空間の識別子が必要ですが、実際にはone of the authentication gems hereを使用することをお勧めします。

関連する問題