どちらを使用しても問題なく、オブジェクトの永続Active Record
性をアプリDataMapper
に追加できました。Sinatra
人々は私Sequel
にとても良いと言いますが、哲学的には私見から離れた世界ではありませんActive Record
.
Active Record
移行ファイルのコレクション内のデータベースとテーブル定義のセットとしてテーブルをSequel
綴り、データベーステーブルの構築または更新に使用されるスキーマにマージします。基礎となる SQL データベースに本当に関心がある場合は、これらのいずれかが最適です。私はそれらが1つのうち6つ、もう1つが半ダースであることを発見しました。
DataMapper
よりオブジェクト中心であり、オブジェクト独自のクラス定義で必要なプロパティとオブジェクトの関係を定義できます。そして、アプリの起動時に呼び出しを行うDataMapper.auto_upgrade!
と、オブジェクト グラフに合わせてデータベースがアップグレードされます。利点は、オブジェクトが持つ可能性のあるプロパティを見つけるために探す場所が 1 か所しかないことです。欠点は、基礎となるデータベースの詳細をあまり制御できないことですが、マッピングを厳密に定義することは不可能ではありませんが、DataMapper
データベース テーブルのオブジェクト グラフを気にする場合にはうまく機能します。
幸いなことに、オブジェクト グラフからSQL
データベース テーブルへのマッピングを定義すると、ほとんどすべて同じように機能します。すべてが、関連するオブジェクトのコレクションの遅延ロードまたはプリエンプティブ ロード、多対多の関係、ポリモーフィズムなどをサポートし、構成とシードの詳細のみが異なる傾向があります。
DataMapper
アプリのオブジェクト グラフはまだ流動的であるため、データベース スキーマを投げたり破棄したりする速さだけを理由にプロジェクトを開始することがよくあります。Active Record
スキーマが落ち着いたらすぐにリファクタリングして使用します。Sequel
次のプロジェクトでは、人々が絶賛しているように見えるので、やってみようと思います。