2016-09-25 11 views
0
def create 
    chef = Chef.find_by(email: params[:email]) 
    if chef && chef.authenticate(params[:password]) 
     **session[:chef_id] = chef.id** 
     flash[:success] = "You logged In" 
     redirect_to recipes_path 
    else 
     flash.now[:danger] = "Check your email or password" 
     render 'new' 
    end 
    end 

以下のスニペットの3行目のコードは何をしますか?

session[:chef_id] = chef.id 

は何をしますか?それはsession[:chef_id]のようなものですか?シェフのIDはどこに割り当てられていますか?そこに別の名前を付けることはできますか?

答えて

0

session[:chef_id] = :fooは、:fooの値を持つセッション中のchef_idキーを格納します。
:fooの値を後でsession[:chef_id]に呼び出すことで取得できます。

あなたのコードには、​​に等しいメールを持っているシェフのIDに割り当てられます。
名前は:chef_idでも好きだけど、かなり普通の名前だと思います。

+0

ありがとう!それは – Vijay

0

これは、chef_idをsessionに格納しています。これは、複数のリクエストにわたってデータを永続化する方法です。セッションはすべてのWebアプリケーションでも利用できるため、Rails固有のものではありません。あなたはRailsセッションの詳細を読むことができますhere以上のウェブセッションhere

+0

を解決するので、@オウルウルワは大会の一部ですか? session [:chef] = chef.id これは使えますか? – Vijay

+0

はい、アプリケーションの他の部分に影響を与えない限り、キーは本当に重要ではありません。例えば、あなたが 'Chef.find(session [:chef_id])'を実行しているかもしれない場合、 'Chef.find(session [:chef])'に変更する必要があります。しかし、明確にするために、 'chef_id'は' chef'オブジェクトではないので、 'chef_id'のままにしておくことをお勧めします。 – oreoluwa

+0

そうです。ありがとうございました ! – Vijay

関連する問題