I'm just learning RoR and have run into my first real bug. Would really appreciate some guidance with it. I am up to the point of creating a user sign in/out feature for a site I am building which will be maintained through sessions. When the sign in form submits it goes to a sessions controller which calls the 'create' method. When it does this it displays this error:
NoMethodError in SessionsController#create
You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.[]
Here's the code for the create method:
33 def create
34 user = User.authenticate(params[:session][:email],
35 params[:session][:password])
36 if user.nil?
37 flash.now[:error] = "Invalid email/password combination."
38 @title = "Sign in"
39 render 'new'
40 else
41 sign_in user
42 redirect_back_or user
43 end
44 end
The application trace says the error is at
app/controllers/sessions_controller.rb:34:in `create'
So the issue seems to be with the authenticate method. This is a class method defined for my user object. What's weird is that I tested the method in rails console and it works fine. Below is the full trace. Again would be very grateful for some help with this. Thanks you.
Trace:
app/controllers/sessions_controller.rb:34:in
create' actionpack (3.0.4) lib/action_controller/metal/implicit_render.rb:4:insend_action' actionpack (3.0.4) lib/abstract_controller/base.rb:150:inprocess_action' actionpack (3.0.4) lib/action_controller/metal/rendering.rb:11:inprocess_action' actionpack (3.0.4) lib/abstract_controller/callbacks.rb:18:inblock in process_action' activesupport (3.0.4) lib/active_support/callbacks.rb:435:inrun_4224187041876590211__process_action_3718750575726612430_callbacks' activesupport (3.0.4) lib/active_support/callbacks.rb:409:in_run_process_action_callbacks' activesupport (3.0.4) lib/active_support/callbacks.rb:93:inrun_callbacks' actionpack (3.0.4) lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack (3.0.4) lib/action_controller/metal/instrumentation.rb:30:inblock in process_action' activesupport (3.0.4) lib/active_support/notifications.rb:52:inblock in instrument' activesupport (3.0.4) lib/active_support/notifications/instrumenter.rb:21:ininstrument' activesupport (3.0.4) lib/active_support/notifications.rb:52:ininstrument' actionpack (3.0.4) lib/action_controller/metal/instrumentation.rb:29:inprocess_action' actionpack (3.0.4) lib/action_controller/metal/rescue.rb:17:inprocess_action' actionpack (3.0.4) lib/abstract_controller/base.rb:119:inprocess' actionpack (3.0.4) lib/abstract_controller/rendering.rb:41:inprocess' actionpack (3.0.4) lib/action_controller/metal.rb:138:indispatch' actionpack (3.0.4) lib/action_controller/metal/rack_delegation.rb:14:indispatch' actionpack (3.0.4) lib/action_controller/metal.rb:178:inblock in action' actionpack (3.0.4) lib/action_dispatch/routing/route_set.rb:62:incall' actionpack (3.0.4) lib/action_dispatch/routing/route_set.rb:62:indispatch' actionpack (3.0.4) lib/action_dispatch/routing/route_set.rb:27:incall' rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:inblock in call' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:inblock in recognize' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:68:inoptimized_each' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:inrecognize' rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:incall' actionpack (3.0.4) lib/action_dispatch/routing/route_set.rb:492:incall' actionpack (3.0.4) lib/action_dispatch/middleware/best_standards_support.rb:17:incall' actionpack (3.0.4) lib/action_dispatch/middleware/head.rb:14:incall' rack (1.2.2) lib/rack/methodoverride.rb:24:incall' actionpack (3.0.4) lib/action_dispatch/middleware/params_parser.rb:21:incall' actionpack (3.0.4) lib/action_dispatch/middleware/flash.rb:182:incall' actionpack (3.0.4) lib/action_dispatch/middleware/session/abstract_store.rb:149:incall' actionpack (3.0.4) lib/action_dispatch/middleware/cookies.rb:302:incall' activerecord (3.0.4) lib/active_record/query_cache.rb:32:inblock in call' activerecord (3.0.4) lib/active_record/connection_adapters/abstract/query_cache.rb:28:incache' activerecord (3.0.4) lib/active_record/query_cache.rb:12:incache' activerecord (3.0.4) lib/active_record/query_cache.rb:31:incall' activerecord (3.0.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:incall' actionpack (3.0.4) lib/action_dispatch/middleware/callbacks.rb:46:inblock in call' activesupport (3.0.4) lib/active_support/callbacks.rb:415:in_run_call_callbacks' actionpack (3.0.4) lib/action_dispatch/middleware/callbacks.rb:44:incall' rack (1.2.2) lib/rack/sendfile.rb:107:incall' actionpack (3.0.4) lib/action_dispatch/middleware/remote_ip.rb:48:incall' actionpack (3.0.4) lib/action_dispatch/middleware/show_exceptions.rb:47:incall' railties (3.0.4) lib/rails/rack/logger.rb:13:incall' rack (1.2.2) lib/rack/runtime.rb:17:incall' activesupport (3.0.4) lib/active_support/cache/strategy/local_cache.rb:72:incall' rack (1.2.2) lib/rack/lock.rb:11:inblock in call' <internal:prelude>:10:insynchronize' rack (1.2.2) lib/rack/lock.rb:11:incall' actionpack (3.0.4) lib/action_dispatch/middleware/static.rb:30:incall' railties (3.0.4) lib/rails/application.rb:168:incall' railties (3.0.4) lib/rails/application.rb:77:inmethod_missing' railties (3.0.4) lib/rails/rack/log_tailer.rb:14:incall' rack (1.2.2) lib/rack/content_length.rb:13:incall' rack (1.2.2) lib/rack/handler/webrick.rb:52:inservice' /Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:111:inservice' /Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:70:inrun' /Users/USERNAME_REMOVED/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/server.rb:183:inblock in start_thread'