tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

Ruby on Rails Tutorial チャプター6 メモ

Ruby on Rails Tutorial 開発ログをTail

RoR Tutoarial のチャプター6.1.3

rails consoleで User.new を 実行した後、

開発ログをtailしたまま上を実行していた場合、実行後に新しい行が何も表示されないことに気付いた方もいると思います。

 のような表記があります。最初なんのことかわからなかったのですが、UnixにはTailというコマンドがあるんですね。初心者なのでわかりませんでした(汗)

やりかたは:

  1. ターミナルで新しいウインドウまたはタブを開く。
  2. $ cd rails_projects/sample_app でディレクトリを移動
  3. $ 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から

 

 

 

 

 

間違いがあれば、ご指摘下さると幸いです。