-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ruby on Rails チュートリアル 第8章 #66
Comments
そうです。正しくはモデルというよりはクラスから作成したインスタンスにひもづく変数のためインスタンス変数と呼ばれます。クラスが元になってインスタンスを
エラーメッセージを使用しても良いですがflashの方が簡単に設定できるのとモデルに紐づかないエラーメッセージを出すのに使ったりします。 (1) 入力をやり直してください => モデルに紐づかずエラーメッセージを出力している モデルに紐づいたエラーを出力するときはfull_messagesでそれ以外のメッセージなどを扱うときはflashを使ったりしますね:smile: |
ご回答、及び参考URLを添付いただきありがとうございます。 エラーメッセージについては理解できました! |
遅くなりました!:bow:
Sessionというクラスがないとそのインスタンスを作成することはできないですね sessionについてはこれが詳しいかもです
ですです。継承元のActionControllerというRailsのmoduleの中で処理していると思います:bow: |
ご回答ありがとうございます! |
これは記事にもありますが実体としてはローカル変数ではなくメソッドかもですね
これって8章のどこらへんの記述でしょうか? |
返信遅くなりまして、申し訳ありません。 |
ここでいうセッションフォームはログインフォームのことですね。ユーザー登録の時はユーザー登録処理でUserモデルのインスタンス@userを生成して保存することで新規ユーザーを作成するという流れだったのですが、ログインだと新規に作成するデータがないので ユーザー登録 form_for(@user) で ユーザーをcreateするためのフォームを生成できた ログイン form_for(???) ログインで生成したりするインスタンス(データ)が存在しないのでログインフォームを設定するために form_forは便利なヘルパーメソッドでリソース(@userとか)を渡すだけでフォームを生成してくれるのですがフォームに紐づけるリソースが存在しない場合は個別にフォームを作るためのパラメータを設定しないといけないということをここでは言っていると思います。 |
@asuka001 ご確認をお願いします:bow: |
概要
Ruby on Railsチュートリアルの第8章を勉強しています。
cookiesを使用して、セッションを実装する方法を学んでいます。
初歩的な質問となり、申し訳ありませんが
セッションを実装するにあたり理解できない点があったので教えていただければと思います。
実現したいこと
曖昧な点を解消し、理解を深めたいです。
理解できている点
・セッションはUserモデルとは異なり、cookiesを保存場所とするのでSessionモデルは作成しない
・Sessionモデルを作成しないので、 ActiveRecordのメソッドを使用することができない
・SessionコントローラからUserモデルにアクセスすることはできる
→UserモデルはActiveRecordのメソッドを使用することができるので以下のコードを記述できる
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# ユーザーログイン後にユーザー情報のページにリダイレクトする
else
# エラーメッセージを作成する
render 'new'
end
end
困っていること
以下について理解できていません。
・インスタンス変数はモデルを作成していないと設定することができない?
→Userモデルにアクセスすることはできるが、Session自体はモデルがないのでインスタンス変数を設定できない?
・createメソッドでユーザ情報の検索結果が失敗した時にエラーメッセージを作成することになっており
ここではflashを記述するように指定している。
ユーザ情報を検索するためにUserモデルにアクセスしたように
エラーメッセージもUserモデルのエラーメッセージを使用することがなぜできないのか?
なぜuser.errors.full_messagesをcreateメソッドで使用できないのか?
これはインスタンス変数を持つことができないから。。。?
・インスタンス変数についてもっと理解が深められるような参考ページがありましたら教えてください。
→分かっていること:コントローラで設定したインスタンス変数はビューでも使用することができる
:同じクラスであれば、インスタンス変数はその他のインスタンスメソッドでも使用できる
The text was updated successfully, but these errors were encountered: