Rails勉強日記

NO IMAGE

普段勉強しているRailsの事を書いていこうと思います。

勉強のまとめ的に書く場合もあるので悪しからず。

ハンドルネームがPerlのくせにRailsを語るのでちょっとややこしい感じがしますが
その辺は気にせず参りましょう。

Rails2.1の新機能としてActiveRecordにDirtyオブジェクトが追加されました。
これはADO.NETのRowStateプロパティのようにデータセットのトラッキングを
行う事ができるオブジェクトで、これで変更されたレコードだけを抽出してDBに
更新する事も可能になる。だたADO.NETのようにデータセットをロールバック
したりするようなDB的なアクションはできません。

こういう機能って他のO/Rマッパーでは標準的な機能なんでしょうか?
結構便利な機能ですよね。VBではかなりお世話になります。

以下サンプル。

orders = Order.find(:first)    #=> モデルを生成

orders.title = “hogehoge”    #=> 取得したインスタンスを変更

#変更されたか
orders.changed?            #=> true

#カラムを指定する事も可能
orders.title_changed?        #=> true

#更新
orders.save!           

#更新後は初期化される
order.changed?            #=> false

変わった?とオブジェクトに問いかけているようなメソッド名がなんともRubyらしい。
しかもメソッド名に列名を付ける事ができるという、なんかメソッドとプロパティが合体したような感じ。
JavaやVB.NETのような由緒正しい言語からするとかなりカジュアル。

他にも”named_scope”という検索条件をモデルに定義てきるようになった。
findのconditionが同じ条件が多い場合、モデルの方に検索条件を纏めておいてメソッドとして使えるようにする仕組み。
「同じ作業を繰り返さない」考えを持つRailsならではの発想です。

と言っても2.1は最新ではなく先月2.2がリリースされました。
早速リリースノートとドキュメントを読んで勉強しているので次回以降
2.2の新機能なども書いていきます。