せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】パーフェクトRuby 学習感想文 ~第15章 その2

それでは15章を読んでいきます。

(参考・経緯など)
パーフェクトRuby 学習感想文 ~はじめに


 

P553 メソッドの記載順序

validate をSTATUS定数の前に書いたらエラー

irb(main):001:0> require 'todo_samp'
NameError: uninitialized constant TodoSamp::Task::STATUS
        from c:/repositories/todo_samp/lib/todo_samp/task.rb:9:in `<class:Task>'

上から順に実行するから、validateを末尾に移動したらOK。
初めて知った。
どこかに記載しても良いのでは。


 

P554 発生エラーが違う

irb(main):006:1* command.create_task(nil,nil)
irb(main):007:1> rescue =>e
irb(main):008:1> p e.class
irb(main):009:1> p e.record

■実行結果

ActiveRecord::StatementInvalid: SQLite3::ConstraintException:
 tasks.name may not be NULL: INSERT INTO "tasks" ("content", "created_at", "name", "status", "updated_at") VALUES (?, ?, ?, ?, ?)

本ではActiveRecord::RecordInvalid が発生すると書いてあるけどエラーが違う。
エラー内容を見るとvalidationが効いているので、ひとまずはいいか。。

この本ではirbでテストを行っているけど、
一行一行書き込むのがめんどくさすぎるよー。
ミススペルしたときの回復方法も分からないし、、、
入れ間違えたらもう一度一行目からやり直しだし、、、

ファイルにテストコードを書いておいて、それを実行する方法も知りたいよー。。

データモデルは終了。