改訂4版 基礎Ruby on Rails 基礎シリーズ(2回目)

はじめに

第2回目ということで、躓きながらも5章まで到達した。
会員名簿を表示するところまでできた。

ここまでの躓きポイント

2つつまずくポイントがあったがそれぞれ対処できた。最初①には気づかなかったが、②が正しく動かなかったので、振り返って①を直したという流れである。
直接的に①がどのような問題を含んでいるのかはわからない。
4.3節 データ保存で、membersテーブルに新しい会員を登録するときのsaveメソッド実行時に②が発生して、①→②の順に修正をしていった流れ。

① bin/rails g model 実行時にDeprecation Warning

②が解決できなかったので、とりあえず①を直し始めた、という流れでいつも通りgoogleに頼って、thorのバージョンを変えてみた。

以下の処置で対策完了である。

# Gemfileの末尾に以下1行を追加
gem 'thor', '0.19.1'
 
root@DESKTOP-8DE6JPI:~/rails/asagao$ bundle update thor

② ユーザ登録時にActiveRecord::NotNullViolationが発生

membersテーブルにsaveメソッドで新規ユーザを保存しようとするがエラーとなった。
結論的にはbin/rails db:reset で直った。saveできるようになった。
調査の結果、同じ問題にはまる人は多いようだがメソッド名誤りとかテーブル名誤りとかが原因で、適切なものは見つからなく困っていて、最後に見つけサイトで「テーブルリセットしたら直った」のコメントに願いを込めて実行したら、マジ直った。

irb(main):005:0> member.save
   (0.1ms)  begin transaction
  Member Create (7.5ms)  INSERT INTO "members" ("number", "name", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["number", 1], ["name", "Taro"], ["created_at", "2024-02-19 01:46:03.868978"], ["updated_at", "2024-02-19 01:46:03.868978"]]
   (2.5ms)  rollback transaction
Traceback (most recent call last):
        1: from (irb):5
ActiveRecord::NotNullViolation (SQLite3::ConstraintException: NOT NULL constraint failed: members.set: INSERT INTO "members" ("number", "name", "created_at", "updated_at") VALUES (?, ?, ?, ?))


まとめ

躓きながらも順調です。
ある程度環境は整ったと思うので、根気強く続けたいと思う。
いつも通り飽きないよう取り組み、最後まで到達したい。

この記事が気に入ったらサポートをしてみませんか?