私がこれを行うために使用した場所:
Foo.find_by_bar('a-value')
私はこれを行うことができます:
Foo.where(:bar => 'a-value').limit(1).first
これはお勧めですか?これは最善の方法ですか? 「古い」方法を引き続き使用する必要があるのは、それが有用な構文シュガーであるためです。それとも、チェーンや他のすべての優れた機能をサポートする、今より良い方法がありますか?
Rails 4:
Foo.find_by bar: 'a_value' , wibble: 'a wibble value'
単一のレコードを返すための望ましい方法は、2番目の例に沿ったものになると思いますが、制限部分は省略できます。
Foo.where(:bar => 'a-value').first
これは新しい構文に従い、ルックアップに条件を追加したい場合に連鎖をサポートします。
Railsは、この種のもののための魔法のメソッドの完全なロードを提供します。
Foo.find_by_bar('a-value')
複数の属性を使用することもできます。
Foo.find_by_bar_and_wibble('a foo value', 'a wibble value')
そして!何も見つからない場合はRecordNotFoundをスローします。
Foo.find_by_bar!('a-value')
その他の代替:
Foo.find(:first, conditions: { bar: 'a-value' })
複数の属性を使用することもできます。
Foo.find(:first, conditions: { bar: 'a-value' , wibble: 'a wibble value' })