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はこちら

リスト 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です。
ただ、私はnameemailとシンボルを入れ忘れてしまいました。
そしてrails sした結果が以下。

f:id:ken992:20170826165740p:plain

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シンボルをつけて f:id:ken992:20170826171733p:plain

rails sしてみた。

f:id:ken992:20170826170532p:plain

するとエラーにならないでトップ画面は表示された!なぜnameの箇所はエラーにならないのか?

その後、画面上からNew Userを選択して、nameとemailのテキストボックスに値を入力後、Create Userボタンを押すと以下の画面が出て結局エラーにはなりました。

f:id:ken992:20170826171229p:plain

nameemailどちらもただの変数名だと思うのですが、なぜ挙動が違うんでしょう。 いまだによくわからず。。

一応、githubのRepositoryは以下です。
git clone -b question1 git://github.com/ken992/toy_app/