Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

現場rails 写経で得た事(4章) 前編

まずエラーを見ようね。

Migrations are pending. To resolve this issue, run:
        bin/rails db:migrate RAILS_ENV=development

これはマイグレーションのリセットとかもあり得るのかもしれないけど 意外とスペルミスもあり得るかのでその点、確認して方がいいかも。 今回はマイグレーションファイルにスペルミスがあったと思う。

もう一つ

新規登録するとuserカラムないのに「Userを入力してください」

上記のエラーでずっと悩んでいた。 結論を言うと、4−5−11−3の部分をやっていなかったから エラーが出た。要は僕の凡ミスです。 けど、意味はあった。ここをデバックして見つけたから。 見つけた順序としては

1 binding.irbを以下のところでやる。

def create
   @task = current_user.tasks.new(task_params) 
#ここをTask.new(task_params)にしてた。
  binding.irb
   if @task.save
     redirect_to @task, notice: "タスク「#{@task.name}」を登録しました。"
   else
     render :new
   end
  end

2 @task.valid?でfalseだと判明する。

3 @task.errors?でuser_idもnilだと気づく。(userカラムないのに)

4 調べると、Task.new(task_params)はuser_idも代入する必要がことを知る。

5 current_user.tasks.new(task_params) に修正する。

これで解決した。

具体的には、まだ言えないところもあるけど デバックを自力でやったのは初めてかもしれんので 褒める意味を込めて、ブログに書きますね。

あと、今回の写経を通じて 大きく成長したなと感じるのは 「エラーに対して免疫がついたこと」 以前までは、動揺したりイライラしたりすることも多かったけど 今回はなんというか平常心でやれたような気がする。 そこは成長したなと個人的に思うかな。

今回はここで終わります。 また4章を見直して それから記事を書きます。