Ответ 1
Рельсы 4:
Foo.find_by bar: 'a_value' , wibble: 'a wibble value'
Где я это делал:
Foo.find_by_bar('a-value')
Теперь я могу сделать это:
Foo.where(:bar => 'a-value').limit(1).first
Это рекомендуется? Это лучший способ? Должен ли я продолжать использовать "старый" способ, потому что он по-прежнему является полезным синтаксическим сахаром или существует еще лучший способ, который я могу сделать сейчас, что будет поддерживать цепочку и все другие хорошие вещи?
Рельсы 4:
Foo.find_by bar: 'a_value' , wibble: 'a wibble value'
Я думаю, что предпочтительный способ вернуть одну запись будет по строкам вашего второго примера, но вы можете опустить предельную часть:
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')
И добавление a! заставляет его бросать 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' })