findする際の第一引数にあたる:all,:firstだがちょっと躓いた
:allは名のごとく条件に当てはまるものを全件取得してくる
:firstは条件に当てはまる中の最初の1件のみ取得してくる
:allを指定した時点で結果が配列になって返ってくるというところで詰まった
特定の値のみを取得してくる際にも:allだとeach文で取り出す必要がある
それと選択した値が存在しなかった場合の返してくる値が違う
:all
すでに配列にはされているため空の配列()が返ってくる
:first
nilが返ってくる
だとblank?で判定できないんじゃないかとも思ったがそうでもなかった
>> [].blank? => true >> nil.blank? => true >> 1.blank? => false
動的ファインダ
ActiveRecordではRubyの動的な能力を活かして自動的にSQLを作るようで
ModelName.find_all_by_column_name(value) ModelName.find_by_column_name(value)
上記の様に書くと
ModelName.find :all, :conditions => ["column_name = ?", value] ModelName.find :first, :conditions => ["column_name = ?", value]
という風に書いているのと同じ扱いになるぽい