はじめに
Ruby on Railsでdeviseのgemを導入した際にはコントローラは生成されない。となった時にどこで何を見たらいいの?と思い、分からなかったので、メンターさんに質問して理解した内容をここに記録する。
(自分にしかわからない書き方となっていること、ご了承ください)
form-forの記述をform-withへ変更した時、model: @○○を記述するがこのインスタンス変数はどこからやってきたの?
form-forの記述
<%= <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> %>
form_withの記述
<%= <%= form_with model: @user, url: user_registration_path do |f| %> %>
疑問点。。。
model: @user
と記述したので、インスタンス変数@user
はどこかで定義されてるはずだが、どこをみたらいいのだろう?deviseのgemを導入した場合はコントローラは生成されてないし。。
やってみよう!
とりあえずmodel: @user
をmodel: user
にしてみた!
結果。。。
もちろんエラー発生。。。
おそらくdeviseのgemを導入したらdeviseで作成したモデルをインスタンス変数で持ってこれるのだと思われるが、モヤモヤするので念のためメンターさんに質問した。
メンターさんの回答
上記の認識で基本的には合っています。
Gemファイルで導入した場合、裏で必要な機能をすでに実装してくれているので、そのまま持ってこれるようになります。
とのことです!
終わりに
どこでインスタンス変数を定義しているのか分かったら追記させていただきます!
まだまだ理解できていないことが多いので少しずつでも解消していきたいと思います!