一応書いとくけど
Modelはそもそもいろんな案件で使い回しが聞く、これは当たり前である。しかし俺がいってるのはそういうことではなくて、ActiveRecordとDataMapperではその取り回し、扱いやすさに大きな差があって、DataMapperの方が扱いやすいということを書いている。
ActiveRecordは既存のデータベース設計があって、それに対して自動でスキーマ定義を読み込んでRubyオブジェクトっぽく扱えるようにするというライブラリなんだけど、一方DataMapperはコードでRubyのクラスとして記述すると、それがデータベーススキーマとして生成できる。
実際にコードで書くとこんな感じ
ActiveRecord
class Channel < ActiveRecord::Base def logic end end
DataMapper
class Channel include DataMapper::Resource property :name, String property :viewers, Integer property :relays, Integer def logic end end
ここで重要なのは、ActiveRecordのほうは実際には強くデータベース定義と依存しているのにも関わらずその定義がコード上に存在しないということ。このファイルをコピーしただけではまともに動かない。一方DataMapperはこのコードにすべてがある。データベースの定義からそのモデルのロジックまで。すべてのロジックがこのmodelに隠蔽されているため、別の案件に移行するのが極めて容易
- 眠い