思いつくままプログラミングネタを書き殴ります。Mongoidで値の重複チェック名前とコードと詳細を保存するアイテムというデータを考えます。削除日時というカラムもあって、これは削除された場合ここに日付がはいります。コードは削除されていないアイテムの中でユニークな値とします。バリデーションのチェックのためにvalidates_uniqueness_ofを使うとユニークであることをチェックしてくれるんですが、削除されていないアイテムという条件が考慮されません。そこで独自のバリデーションを定義してこれを呼ぶことにしました。独自のバリデーションはvalidateを呼んで独自のバリデーション用の関数を渡します。独自のバリデーションではエラーが起きた時にerrors.addにエラーのあった項目とエラーメッセージを渡します。(12/28)PostgreSQLとRubyを組み合わせてブラックリストチェックの速度を測ってみた。