DataMapper Model

こんにちは。麺処まつば副店長です。

今日は DataMapper でレコードを扱う方法について少し調べてみました。
本家から、(副店長が)よく使いそうなものを拾ってきました。

本家はこちらです。
http://datamapper.org/docs/create_and_destroy
http://rubydoc.info/gems/dm-core/1.1.0/frames

検索

Zoo.all                                   # 全部取得
Zoo.all(:open => true)                    # open が true のものだけ
Zoo.all(:opened_on => start..end)         # opend_on が start 〜 end の期間のもの
Zoo.all(:order => [ :tiger_count.desc ])  # 虎の数で並び替え

Zoo.get(1)                # プライマリーキーが 1 
Zoo.get!(1)               # プライマリーキーが 1 失敗すると ObjectNotFoundError
Zoo.get('DFW')            # 自然(プライマリー)キーもサポート
Zoo.get('Metro', 'DFW')   # 複合キーでもいけます

更新(作成・更新・削除)

Zoo.create(
  :column1 => "column1 column1",
  :column2 => 15,
  :column3 => Time.now
)

# インスタンス生成して保存
zoo = Zoo.new(
  :column1 => "column1 column1",
  :column2 => 15,
  :column3 => Time.now
)
zoo.save

# 更新
Person.update(:allow_beer => true)

# 保存失敗で例外発生
User.raise_on_save_failure 

# 削除
zoo = Zoo.get(5)
zoo.destroy
# 全部消す
Zoo.all.destroy

# 合わせ技1:検索してなかったらcreate
zoo = Zoo.first_or_create(:name => 'The Glue Factory')

なんとなく分かったツモリになりました(気分だけ)