findは4つのパターンで検索できる

Ruby on Railsでfindメソッドはよく利用されるかと思いますが、検索方法にもいくつかパターンが
あります。

find(int)

Model.find(1)

Modelテーブルのidカラム「1」が検索される
複数、配列も指定可能

Model.find(1,2,3)

Model.find([1,2,3])

検索できなければ例外が発生する。
これはDBに存在するキーをわかっていて検索させているという意味があって、
検索キーがない場合は、Railsが例外(RecordNotFound)を発生させます。

下記方法の条件を利用してのファインダでは、条件にマッチするレコードを
検索しているので、もしない場合は空の配列を返します。

find(symbol, :conditions)

symbolには「;all」とか「:first」が入ります。
:conditionsはSQLの「where」で指定する条件になります。

Model.find(:all, :conditions => "column = 1")

これだとSQLインジェクションになってしまうので、バインドを利用します。

Model.find(:all, :conditions => "column = ?", 1)

find(symbol, Array)

symbolには「;all」とか「:first」が入ります。
Arrayには検索条件を配列で渡すことができます。

Model.find(:all, :conditions => "column => :cond", {:cond => 1})

find_by_xxx()

Model.find_by_name("smoothy")

Modelテーブルでnameがsmoothyのものを検索します。
直感的にわかりやすいと思いますが、レコードが多い場合などにはパフォーマンスが低下しますので、
ご注意ください。