<p>DataMapperパターンのRuby実装。RDB、KVS、NoSQL系DBをサポートしてて、1.0.0なので結構枯れてる。
<p>調べる必要があったヤツだけをメモ。</p>
<h3>スラッグ型(URLの中で使える文字列)</h3>
<p>String型のサブクラスだから安心。</p>
<pre class="prettyprint"><code>require 'dm-types'
Class Post
include DataMapper::Resource
property :slug, Slug
end</code></pre>
<h3>デフォルトスコープ</h3>
<pre class="prettyprint"><code>Class Post
include DataMapper::Resource
property :id, Serial
default_scope(:default).update(:order => [:id.desc])
end</code></pre>
<h3>手抜き全文検索</h3>
<pre class="prettyprint"><code>Class Post
include DataMapper::Resource
property :id, Serial
property :title, String
property :body, Text
def self.search(str)
all(:title.like => "%#{str}%") |
all(:body.like => "%#{str}%")
end
end</code></pre>
<pre class="prettyprint"><code>Post.search('unk').all(:limit => 5)</code></pre>
<p>「でたー!クラウザーさんのLIKE '%foo%'だー!」</p>
<p>真面目にやるならdm-is-searchableでインデックスを別のストレージ(DM用語ではrepository)に保存する。</p>