2015-01-17 3 views
1

При использовании find_by и просто подачи идентификатора param, find_by возвращает первую запись в таблице.Find_by возвращает первую запись

E.g.

@article = Article.find_by(params[:article_id]) 

возвращает изделие с id = 1 при использовании find дает мне статью с id = :article_id

Может кто-нибудь объяснить, почему find_by возвращает запись с первым идентификатором?

ответ

4

Используя метод find, вы можете получить объект, соответствующий указанному первичному ключу, который соответствует любым предоставленным параметрам.

так это правильный синтаксис

@article = Article.find(params[:article_id]) 

в то время как метод find_by находит первую запись, соответствующую некоторые условия

так что вы должны написать

@article = Article.find_by(id:params[:article_id]) 

источник: http://guides.rubyonrails.org/active_record_querying.html

+0

Спасибо, Я понял это сам. Вопрос в том, почему он возвращает первую запись в tabke при отсутствии «id:». – Randomtheories

Смежные вопросы