# ActiveRecord::StatementInvalid in UserController#login

**URL:** <https://www.ruby-forum.com/t/activerecord-statementinvalid-in-usercontroller-login/148058>\
**Category:** Ruby\
**Created:** [September 8, 2008, 7:25pm UTC](https://www.ruby-forum.com/t/activerecord-statementinvalid-in-usercontroller-login/148058 "2008-09-08T19:25:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 8, 2008, 7:25pm UTC](https://www.ruby-forum.com/t/activerecord-statementinvalid-in-usercontroller-login/148058/1 "2008-09-08T19:25:31Z")

</div>

I am trying to implement the authentication code that is in the book  
Ruby on Rails Made easy. Everything work fine until I try actually  
loggin in as a user I get the following error:

ActiveRecord::StatementInvalid in UserController#login

Mysql::Error: #42000You have an error in your SQL syntax; check the  
manual that corresponds to your MySQL server version for the right  
syntax to use near ‘‘86f7e437faa5a7fce15d1ddcb9eaeaea377667b8’) LIMIT  
1’ at line 1: SELECT \* FROM `users` WHERE (login = ‘a’ AND password  
‘86f7e437faa5a7fce15d1ddcb9eaeaea377667b8’) LIMIT 1

RAILS\_ROOT: /private/var/root/Documents/VanCoop  
Application Trace | Framework Trace | Full Trace

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract\_adapter.rb:147:in  
`log' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:299:in`execute’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/mysql\_adapter.rb:515:in  
`select' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in`select\_all\_without\_query\_cache’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/query_cache.rb:80:in`cache\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:582:in`find\_by\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:1341:in  
`find_every' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1303:in`find\_initial’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:534:in  
`find' app/models/user.rb:19:in`authenticate’  
app/controllers/user\_controller.rb:15:in `login’

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract\_adapter.rb:147:in  
`log' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:299:in`execute’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/mysql\_adapter.rb:515:in  
`select' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in`select\_all\_without\_query\_cache’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/query_cache.rb:80:in`cache\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:582:in`find\_by\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:1341:in  
`find_every' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1303:in`find\_initial’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:534:in  
`find' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1162:in`send’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/base.rb:1162:in  
`perform_action_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/filters.rb:580:in`call\_filters’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/filters.rb:573:in  
`perform_action_without_benchmark' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in`perform\_action\_without\_rescue’  
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in`perform\_action\_without\_rescue’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/rescue.rb:201:in  
`perform_action_without_caching' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/caching/sql_cache.rb:13:in`perform\_action’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:33:in  
`cache' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/query_cache.rb:8:in`cache’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/caching/sql\_cache.rb:12:in  
`perform_action' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:529:in`send’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/base.rb:529:in  
`process_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/filters.rb:569:in`process\_without\_session\_management\_support’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/session\_management.rb:130:in  
`process' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:389:in`process’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:149:in  
`handle_request' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:107:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:104:in  
`synchronize' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:104:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:120:in  
`dispatch_cgi' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:35:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick\_server.rb:112:in  
`handle_dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick_server.rb:78:in`service’  
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:in`run’  
/usr/local/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:162:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:95:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:92:in `each' /usr/local/lib/ruby/1.8/webrick/server.rb:92:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:23:in `start' /usr/local/lib/ruby/1.8/webrick/server.rb:82:in`start’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick\_server.rb:62:in  
`dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/servers/webrick.rb:66 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`gem\_original\_require’  
/usr/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in`require’  
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active\_support/dependencies.rb:354:in  
`new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in`require’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/server.rb:39  
/usr/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
script/server:3

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract\_adapter.rb:147:in  
`log' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:299:in`execute’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/mysql\_adapter.rb:515:in  
`select' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in`select\_all\_without\_query\_cache’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/query_cache.rb:80:in`cache\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:59:in  
`select_all' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:582:in`find\_by\_sql’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:1341:in  
`find_every' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:1303:in`find\_initial’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/base.rb:534:in  
`find' app/models/user.rb:19:in`authenticate’  
app/controllers/user\_controller.rb:15:in `login' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1162:in`send’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/base.rb:1162:in  
`perform_action_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/filters.rb:580:in`call\_filters’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/filters.rb:573:in  
`perform_action_without_benchmark' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in`perform\_action\_without\_rescue’  
/usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in`perform\_action\_without\_rescue’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/rescue.rb:201:in  
`perform_action_without_caching' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/caching/sql_cache.rb:13:in`perform\_action’  
/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active\_record/connection\_adapters/abstract/query\_cache.rb:33:in  
`cache' /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/query_cache.rb:8:in`cache’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/caching/sql\_cache.rb:12:in  
`perform_action' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:529:in`send’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/base.rb:529:in  
`process_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/filters.rb:569:in`process\_without\_session\_management\_support’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/session\_management.rb:130:in  
`process' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:389:in`process’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:149:in  
`handle_request' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:107:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:104:in  
`synchronize' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:104:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action\_controller/dispatcher.rb:120:in  
`dispatch_cgi' /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:35:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick\_server.rb:112:in  
`handle_dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick_server.rb:78:in`service’  
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:in`run’  
/usr/local/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:162:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:95:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:92:in `each' /usr/local/lib/ruby/1.8/webrick/server.rb:92:in`start’  
/usr/local/lib/ruby/1.8/webrick/server.rb:23:in `start' /usr/local/lib/ruby/1.8/webrick/server.rb:82:in`start’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick\_server.rb:62:in  
`dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/servers/webrick.rb:66 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`gem\_original\_require’  
/usr/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in`require’  
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active\_support/dependencies.rb:354:in  
`new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in`require’  
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/server.rb:39  
/usr/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
script/server:3

Request

Parameters:

{“user”=\>{“login”=\>“a”,  
“password”=\>“a”},  
“commit”=\>“Login”,  
“authenticity\_token”=\>“e3fa4a37e1238e61d4f6747ca2e139a73c676319”,  
“id”=\>“login\_form”}

Show session dump

* * *

flash: !map:ActionController::Flash::FlashHash {}

Response

Headers:

{“cookie”=\>[],  
“Cache-Control”=\>“no-cache”}

I think that there is some problem either in the controller code which  
is:

def login  
if @session = User.authenticate(params[:user][:login],  
params[:user][:password])  
redirect\_to :controller =\> ‘classified’, :action =\> ‘list’  
else  
redirect\_to :controller =\> ‘classified’, :action =\> ‘list’  
end

or, in the model code:

def self.authenticate(login,password)  
find(:first, :conditions =\> [“login = ? AND password ?”, login,  
Digest::SHA1.hexdigest(password)])  
end

OR LAST but not least the views code:

\<%= form\_tag :controller =\> ‘user’, :action =\> ‘login’, :id =\>  
‘login\_form’ %\>  
Login   
  
\<%= text\_field :user, :login -%\>   
  
Password:  
  
\<%= password\_field :user, :password -%\>  
  
\<%= submit\_tag “Login” %\>  
\<% $end %\>  
Need an account? \<%= link\_to ‘Signup today!’, :controller =\> ‘user’,  
:action =\> ‘signup’ %\>

ANYWAY I cannot figure it out any help would be much appreciated.

---

<div class="post-metadata">

**Author:** ![simonsaid](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b5e925/32.png) [@simonsaid](https://www.ruby-forum.com/u/simonsaid)\
**Post date:** [September 8, 2008, 7:31pm UTC](https://www.ruby-forum.com/t/activerecord-statementinvalid-in-usercontroller-login/148058/2 "2008-09-08T19:31:59Z")

</div>

I think you are in the wrong forum. But to answer your question:

The error is probably here:  
def self.authenticate(login,password)  
find(:first, :conditions =\> [“login = ? AND password ?”, login,  
Digest::SHA1.hexdigest(password)])  
end

This should be

def self.authenticate(login,password)  
find(:first, :conditions =\> [“login = ? AND password = ?”, login,  
Digest::SHA1.hexdigest(password)])  
end

You missed an “=” 🙂
