railsチュートリアル
railsチュートリアルの進み具合
railsチュートリアルを初めて一ヶ月近く経ちますが、まだ5章の途中という芳しくない進捗状況。。
gitの使い方だったり、vimの使い方だったり、テンプレートファイルが気になったり、dotfile管理が面白くてはまったり、なぜかラズベリーパイが気になったり、、とrailaと無関係な所が色々気になって脱線しまくっていました。
railsチュートリアルでいまだ解決していない謎
かと言ってrailsチュートリアルそのものが順調だったかというとそんなことはなく、、 細かいどうでもいい所が気になり調べてしまって時間を費やしていました。勉強を進めていけばそのうち自然に解決するだろうと放置中でしたが、一つご紹介。
第2章 Toyアプリケーションの演習 2.3.3 ユーザーはたくさんマイクロポストを持っている 演習3
演習3
リスト 2.17のFILL_INとなっている箇所を書き換えて、Userモデルのnameとemail>が存在していることを検証してみてください (図 2.17)。
リスト 2.17: Userモデルに存在性のバリデーションを追加する app/models/user.rb class User < ApplicationRecord has_many :microposts validates FILL_IN, presence: true # 「FILL_IN」をコードに置き換えてください validates FILL_IN, presence: true # 「FILL_IN」をコードに置き換えてください end
FILL_INの答えはそれぞれ:name
と:email
です。
ただ、私はname
とemail
とシンボルを入れ忘れてしまいました。
そしてrails s
した結果が以下。
3行目のvalidates name , presence: true
は通過して
4行目のvalidates email , presence: true
の箇所で
undefined local variable or method `email' for #<Class:0x005557fccf7a70>となっている。
なぜnameの箇所は通過してemailの箇所でエラーになるのか?
そこで3行目はname
のまま、4行目は:email
シンボルをつけて
rails s
してみた。
するとエラーにならないでトップ画面は表示された!なぜnameの箇所はエラーにならないのか?
その後、画面上からNew Userを選択して、nameとemailのテキストボックスに値を入力後、Create Userボタンを押すと以下の画面が出て結局エラーにはなりました。
name
とemail
どちらもただの変数名だと思うのですが、なぜ挙動が違うんでしょう。
いまだによくわからず。。
一応、githubのRepositoryは以下です。
git clone -b question1 git://github.com/ken992/toy_app/