fc2ブログ

2023.09 «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - » 2023.11
TOP > find_by_ とか find_all_by_ とかが真新しい。プレースホルダーのことも触れてます!

 ← view ファイルの拡張子の優先順位 rhtml, rxml, rjs | TOP | validates_acceptance_of

find_by_ とか find_all_by_ とかが真新しい。プレースホルダーのことも触れてます! 

モデルの行オブジェクト(DB テーブルの 1 行とか複数行とかのデータを持っている)をゲットするときに、DB テーブルに検索をかけます。

その時には、find というメソッドを使うと、ゲットできますね。

例えば、people というテーブルに last_name というカラムがあるとします。

その時は、普通、Person モデルを使ってこの people テーブルにアクセスします。

last_name が '片山' という行を探したい場合、この Person モデルファイルの中で、次のようにします。

person = Person.find(:first, :conditions => ["last_name = '片山'"])



ちなみに、SQL インジェクション対策もされているプレースホルダーは、ハテナ(クエスチョンマーク)で表します。? の周りにシングルクォーテーションを付けないように気をつけてね★

searching_last_name = "片山"
person = Person.find(:first, :conditions => ["last_name = ?", searching_last_name])



でも、もっと簡単な書き方もあるのですよ。メソッド名の find_by_ の後に、探しているカラム名を書けてしまうのです。スゴいですね。

person = Person.find_by_last_name('片山')




同じ感じで、find :all も書き換えることができます。
↓の 2 つは同じです!

people = Person.find(:all, :conditions => ["last_name = '片山'"])
people = Person.find_all_by_last_name('片山')




さらにさらに、今日はふとん圧縮袋をもう 1 枚追加いたしまして同じお値段。 and で複数のカラム名をつなげられますのよ。

person = Person.find_by_last_name_and_first_name('ひとみ')



まあ、これですと名字も名前も「ひとみ」という超珍しい人を探していることになりますがね。「人見 瞳」さんとか、いないことはなさそうですけど・・・

【広告】

[2007.08.06(Mon) 17:02] RubyOnRails(Model)Trackback(0) | Comments(0)
↑TOPへ

 ← view ファイルの拡張子の優先順位 rhtml, rxml, rjs | TOP | validates_acceptance_of

COMMENT

COMMENT POST















管理者にだけ表示

 ← view ファイルの拡張子の優先順位 rhtml, rxml, rjs | TOP | validates_acceptance_of