更新: 皆様、ご回答ありがとうございます - ここにさらに重要な情報があります。
バックエンドに Neo4J グラフ データベース、ROR 3 (MRI)、および REST 経由でアクセスする単一の Neo4J データベース サーバーを使用しています。
Neo4j についてよく知らない場合、データ用に複数のデータベース サーバー (マスター/マスター) を使用するには 26,000 ドルかかります。 「これでどちらの方向に進んでいるか推測できると確信しています..そして、ローカルなどではなく、残りの部分を介して使用しているため、パフォーマンスは重要です...
すべてのデータベース作業を処理する必要がある 1 つのデータベース サーバーがあり、他のクエリが最大 40 ミリ秒かかるこのシナリオでは、はい 1 ミリ秒カウントされます。いいえ、データベースに不要な作業を追加するだけなので、不必要にデータベースにアクセスしたくありません。
ボトルネックと莫大なコストを考えると、「最適化やまだ行っていない問題についてはコーディングしないでください」と言うのは簡単かもしれません - そして、認証の部分を除いて、必要なことはすでに行っているという事実を考えると、実際にはそうではありません.適用されません。
私が知りたかったのは、 @current_user ||= がページ全体で有効かどうかということでした。答えは、リクエストで有効であり、ページやページで有効ではないということです。はい、これは簡単な質問ですが、R&D や高度な作業の最中に尋ねなければならないことがあります。したがって、ログインしているユーザーのIDを保持するためにセッションに固執するという私の直感。
ご協力いただきありがとうございます!
Cookie またはユーザー名とパスワードのいずれかを使用して、ユーザーが自分のサイトにログインできるようにしようとしています。ユーザー名/パスワードの部分は正常に機能しますが、Cookie の導入に問題があります....
http://ruby.railstutorial.org/chapters/sign-in-sign-outを含む「ハウツー」をたくさん用意しました。
gemやdeviseなどは使いたくない。
問題:
||=..
@current_user ||= User.find by blah blah blah を試しました
そしてそれは常にデータベースにヒットします。そんなはずないですよね?一度ヒットすればそれで終わりですよね?
しかし、チュートリアルを提案する前に-私はそれらのトンを見てきました-ここに私の質問があります.. @current_user はページ全体に保存されていますか、それとも現在のページだけに保存されていますか? 上記のリンクは、現在のページ用にのみ保存すると述べています...
お分かりのように、以前にログインした同じ人物を見つけるために不必要にデータベースにアクセスし続けたくありません.セッション変数を使用してそれを行うことができます。
私は本当に Cookie をチェックしたいだけで、その後も session[:user_id] を使い続けたいと思っています..パフォーマンス上の理由から、データベースにアクセスし続けたくありません。
何か助けはありますか?
私の新しいコードは以下のとおりです (これも、このインスタンスで必要なように、常にデータベースにヒットします)。典型的な @current_user ||= find_by.. を削除しました。役に立たなかったためです-常にデータベースにアクセスしていました。
.. https://github.com/cliftonm/basic-authやhttp://ruby.railstutorial.org/chapters/sign-in-sign-outなどは既に試しました。
(ROR 3.2...)
class ApplicationController < ActionController::Base
protect_from_forgery
#before_filter :set_var
helper_method :current_user
private
def current_user
@current_user = User.find_by_id(session[:user_id]) #if session[:user_id]
if (@current_user)
return @current_user
end
@current_user =User.find_by_remember_token(cookies[:auth_token]) if cookies[:auth_token]
if (@current_user)
return @current_user
end
end