2011-02-04 2 views
0

Раньше я делалrails3 ярлык

project = Project.find_by_name('foo') 

Теперь rails3 имеет лучший синтаксис, так что я начал использовать

project = Project.where(:name => 'foo').limit(1).first 

Однако этот новый стиль слишком многословным. Я знаю, есть ли ярлык.

ответ

3

Первый должен работать. Не так ли?

+0

все еще работает, но это медленный метод method_missing. –

+0

Вы определили, что это узкое место в вашем приложении? Вы его профилировали? – ClosureCowboy

+0

Похоже, что это будет незначительным в общем объеме вашего приложения. – raidfive

0

Что случилось только с

project = Project.where(:name => 'foo') 

Вы не имеют ограничение на find_by_name поэтому я полагаю, имена уникальны.

+0

этот возвращает массив. –

+2

'find_by_name' всегда возвращает только одну запись, даже если у вас нет уникальных имен. Если вам нужны все имена, вам нужно будет сделать 'find_all_by_name'. –

+0

project = Project.where (: name => 'foo'). Во-первых, до сих пор нет необходимости в ограничении –

2

Добавление .limit(1) является излишним; вызов метода .first уже делает это за вас. Как и в другом ответе, первый стиль должен работать отлично, и он не устарел.