Ruby on Rails Tutorial チャプター6 メモ
Ruby on Rails Tutorial 開発ログをTail
RoR Tutoarial のチャプター6.1.3
rails consoleで User.new を 実行した後、
開発ログをtailしたまま上を実行していた場合、実行後に新しい行が何も表示されないことに気付いた方もいると思います。
のような表記があります。最初なんのことかわからなかったのですが、UnixにはTailというコマンドがあるんですね。初心者なのでわかりませんでした(汗)
やりかたは:
- ターミナルで新しいウインドウまたはタブを開く。
- $ cd rails_projects/sample_app でディレクトリを移動
- $ tail -f log/development.log と入力
という感じです。新しいウインドウを開くことで、consoleで作業しながらログが見れます。すると、確かに
user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
をconsoleに入力したあと何も新しい行が表示されないことがわかります。
User.create
User.create は user = User.new( ) と user.save を同時に行う。
saveできなかったときはどうなるんだろ。と思ったところちょうど良い記事を発見
ActiveRecordの更新系操作 (1/2) - @IT
これによると、次のようにしてオブジェクトを調べる必要があるらしい
if obj.new_record?
・・・
else
・・・
end
で、他にcreate!というびっくりマーク付きのメソッドがあって、
それだと保存出来なかったとき例外を返してくれるみたい。
なるほど。
reload
reloadを実行すると、データベースの情報を元にオブジェクトを再読み込みする.
user.reload.email => データベースから。
user.email => メモリ上のobjectから