改訂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 (?, ?, ?, ?))
まとめ
躓きながらも順調です。
ある程度環境は整ったと思うので、根気強く続けたいと思う。
いつも通り飽きないよう取り組み、最後まで到達したい。
この記事が気に入ったらサポートをしてみませんか?