Подтвердить что ты не робот

Лучший способ найти одну запись с помощью ActiveRecord 3/Arel?

Где я это делал:

Foo.find_by_bar('a-value')

Теперь я могу сделать это:

Foo.where(:bar => 'a-value').limit(1).first

Это рекомендуется? Это лучший способ? Должен ли я продолжать использовать "старый" способ, потому что он по-прежнему является полезным синтаксическим сахаром или существует еще лучший способ, который я могу сделать сейчас, что будет поддерживать цепочку и все другие хорошие вещи?

4b9b3361

Ответ 1

Рельсы 4:

Foo.find_by bar: 'a_value' , wibble: 'a wibble value'

Ответ 2

Я думаю, что предпочтительный способ вернуть одну запись будет по строкам вашего второго примера, но вы можете опустить предельную часть:

Foo.where(:bar => 'a-value').first

Это следует за новым синтаксисом и поддерживает цепочку, если вы хотите добавить дополнительные условия для поиска.

Ответ 3

Rails дает вам массу полезных методов для такого рода вещей:

Foo.find_by_bar('a-value')

Вы также можете использовать несколько атрибутов:

Foo.find_by_bar_and_wibble('a foo value', 'a wibble value')

И добавление a! заставляет его бросать RecordNotFound, если ничего не найдено:

Foo.find_by_bar!('a-value')

Ответ 4

Другая альтернатива:

Foo.find(:first, conditions: { bar: 'a-value' })

Вы также можете использовать несколько атрибутов:

Foo.find(:first, conditions: { bar: 'a-value' , wibble: 'a wibble value' })