2013-05-27 5 views
0

У меня есть следующий код,find_by NoMethodError в Rails

user = User.find_by(email: params[:session][:email].downcase) 

Это бросает ошибку

NoMethodError in SessionsController#create 

undefined method `find_by' for #<Class:0x007f67187ef730> 

Rails.root: /home/dj/portfolio/sample_app 
Application Trace | Framework Trace | Full Trace 

app/controllers/sessions_controller.rb:7:in `create' 

В других частях кода я успешно используется find_by_email без ошибок. Что может заставить этот метод не работать?

ответ

5

Вы можете использовать User.find(email: "[email protected]") или User.find_by_email("[email protected]"). User.find_by не существует.

+0

Хм, я фактически следую учебнику (railstutorial.org), и в обеих версиях учебника он использует тот же метод. Я изменил его на find_by_email и изменил код, и он работает. Спасибо за Ваш ответ! –

+1

Я считаю, что это из-за выпуска новых рельсов. 4. Если я не ошибаюсь, рельсы 4 устарели всеми методами find_by * и теперь используют метод find_by, который принимает аргументы, как вы видели в примере/руководстве. Похоже, вы случайно взглянули на рельсы 4. это сбивало меня с толку сегодня. – Alan

+0

Для справки: [find_by documentation] (http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by) –

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