内定式

今日の作業

Railsの本や実装をみて勉強する。
今日は主にRailsによるアジャイルWebアプリケーション開発の14章ActiveRecordの基礎について学んだ。
内定者懇談会

今日の作業でわかったこと&わからなかったこと

今日は内定式があった。
早いものでもうあと半年もすれば後輩が入社してくる。
僕は内定者懇談会に参加させてもらったのだが、
これを通して思ったことは来年後輩にとっていい先輩になれるように、
技術的にも人間的にももっと成長していかないといけないと感じた。

調べたことのまとめ

行の更新
order = Order.find(123)
order.update_attribute(:name,"Fred")

属性の値を変更し、モデルオブジェクトを保存

order = Order.find(123)
order.update_attributes(:name => "Fred",
                        :email => "Fred@aaa.com")

複数の属性を一度に変更するメソッド

order = Order.update(12,:name => "Fred", :email => "Fred@aaa.com")

update()メソッドは、指定の行を取得し、指定の属性を更新し、結果をDBに保存し、モデルオブジェクトを返す。

result = Product.update_all("price = 1.1*price", "title like '%Ruby%'")

update_all()メソッドはSQLのupdateステートメントのset句とwhere句を指定できます。
上記のコードはタイトルにRubyという文字が含まれている全ての商品の価格を10%値上げする。

楽観的ロック

更新したデータを行に書き戻す前に、誰かが既にその行を変更していないか確認するやり方。
Railsの実装では、各行にバージョン管理が与えられている。
更新が実行される時、ActiveRecordはテーブル内の行のバージョン番号と更新対象モデルのバージョン番号を比較。
一致しないと更新を中止、例外を発生。
lock_versionという整数の列がテーブルにあると、デフォルトで有効になる。

明日の作業

実装が終わり次第テスト
14章の続きと15章ActiveRecordの詳細を学んでいく。