🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1423閲覧

Rails5のSessionのキー名について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/12/20 13:35

Ruby

1def login 2 @user = User.find_by(...) 3 if @user 4 session[:user_id] = @user.id

ログイン時のセッション保持についての質問です。
上記の記述でuser_idとは何でしょうか。
@user.idを代入していた変数なのでしょうか?
データベースにその項目はありませんし、コントローラでも定義していません。
自分で定義した覚えがないのですが、動作は上手くいってます。

公式ガイドなどを見ても説明が見当たらないので、教えていただければ有難いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

あまり専門家ではないのですが、自分の分かる範囲で説明します...。

session[:user_id] = user.id

これ、:user_idとかの名前はなんでも良かったはずです。このsessionに登録された情報を元にしてログインが保存されます。ただ、ログイン前とログイン後で画面を変えたり遷移するようになっている場合、sessionに入っている情報(通常はuser_id)を参考にするので、user_idの方が管理などの際に間違いも起きづらいと思います。Eメールとパスワードの情報が両方一致していて、初めてこのセッションに情報が格納されて、ログイン状態になります。

二段ネストになるとモデルと紐付けなくてはならないなどの制約はありますが、そちらに関しては以下を参考にしてください。
https://qiita.com/ozackiee/items/4ee774c81b2a0c571c05

Cookieはブラウザ側でのログインなどの情報を保管するところで、Sessionはサーバ側でのログイン情報などを保存しているところになります。これら同士の情報を比較することによって、ブラウザを閉じても情報が維持されます。このサーバ側でのログイン情報を保存しているのが、Railsが提供しているSessionシステムになります。これにはモデルがないので、Controllerとviewでのみで操作します。

こちらに載っている情報を見ていただけると仕組みが直感で分かりやすいと思います。
https://qiita.com/SpicyCoffee/items/de9de9a5427adf81817a
https://qiita.com/shota_matsukawa_ga/items/a21c5cf49a1de6c9561a

投稿2019/12/20 15:53

bamboo-nova

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/20 16:20

どこかで定義されている、というようなことではなかったのですね。 モヤモヤがとれました。ありがとうございました。
guest

0

こちらがとても分かりやすいです

投稿2019/12/20 14:43

k-810

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問