ActiveRecordのfind系メソッドについて

次のような規約くらいでいいかなと思ってたりします。基本的にRailsActiveRecord風味かなと(シンボル使ったりはできないので、何番目の引数がどうのこうのという規約になるんですけどね・・・)。

  • メソッドはfindとfindAll
  • findは基本的にidを条件とした単純なものを取得し、findAllが少しだけ条件を指定したものを取得するようにする。(けどややこしいものはqueryでなげてくれという姿勢はかえない)
  • findは引数にスカラーか配列をとる
    • 引数がスカラーであれば単純なid指定(id = ?)
    • 引数が配列であればそれらを全て取得(id in (?, ?, ?, ・・・))
  • findAllは4つの引数をとる。1つ目は条件を表す配列、2つ目はOrder Byの向けの配列、3つめはoffset、4つ目はlimit(引数を指定しなければ無条件で検索)
    • findAllの1つ目の引数は2つ形式がある
      • 1つ目は配列2つをもつ形式。1つ目の配列でフィールド名を、2つ目の配列でその値を指定する。例えば「array(array('name', 'email'), array('foo', 'foo@bar.jp'))」の形であれば1つ目はハッシュを持つ形式。例えば「array('name' => 'foo', 'email' => 'foo@bar.jp')」の形であれば、「name = 'foo' and email = 'foo@bar.jp'」のようなand条件を作る。
      • 2つ目は文字列と配列を持つ形式。1つ目の文字列で条件式全体を、2つ目の配列でその値を指定する。例えば「array('name = ? or email = ?', array('foo', 'foo@bar.jp'))」の形であれば、「name = 'foo' or email = 'foo@bar.jp'」のようになる。
    • findAllの2つ目の引数はOrder By向けの配列で、「array('email' => ASC, 'id' => DESC)」のような形式で指定
    • findAllの3つ目、4つ目の指定でoffset/limitを指定する。検索結果を部分的に取得する。

こうした方がいいんじゃないの?とかあればツッコミよろしくです。

追記 Order Byの指定は素直に文字列にして「'email ASC, id DESC'」にするかな。文字列ならそのまま、配列なら組み立てるってことにしといたらいいか。
追記 findAllの1つ目の引数の1つ目の形式は素直にハッシュにした方がいいか。その方がわかりやすいな。
追記 findFirstって別にあったほうがいいのかな。内部的にはfindAllをoffset/limit付きで呼ぶだけだけど。