rails, authlogic и sql error - PullRequest
       2

rails, authlogic и sql error

1 голос
/ 18 июля 2011

Я пытаюсь построить систему аутентификации с именем admin_name и паролем в рельсах, используя authlogic.Я получаю следующую ошибку:

Mysql :: Error: у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с ') =' [admin_name] ') LIMIT 1' в строке 1: SELECT admins. * FROM admins WHERE (LOWER (admins).) = '[admin_name]') LIMIT 1

Это код в admin_session_controller.rb ...

def login
  @admin_session = AdminSession.new(params[:admin_session])                   
if @admin_session.save
  flash[:notice] = 'Successfuly logged in.'
  redirect_to :controller => 'admins', :action => 'email_stats'
else
  flash[:notice] = 'Trouble!!'
  render :action => 'new'
end
end

Я предполагаю, что это не нравитсяparams[:admin_session], но я не знаю, почему.

шаблон erb ....

    <%= render :partial => 'layouts/head_admins' %>

<div id="notice">
<% if flash[:notice] %>
<%= flash[:notice] %>
<% end %>
</div>

<div id="main" align="middle">
  <table>
    <%= form_for @admin_session, :as => :admin_session, :url => { :action => "login" } do |f| %>
    <tr class="bold gray">Admin_name</tr>
    <tr id="login_admin_name"><%= f.text_field :admin_name, :class => "text", :tabindex => "1" %></tr>
    <tr class="bold gray">Password</tr>
    <tr id="login_password"><%= f.password_field :password, :class => "password", :tabindex => "2" %></tr>
    <tr><%= image_submit_tag("login_btn.png", :id => 'login_btn', :class=>"image", :tabindex => "3", :alt => 'Login') %></tr>
    <tr class="gray"><%= f.check_box :remember_me %>Keep me logged in</tr>
    <% end %>
  </table>
</div>

Это журнал ошибок:

    Started POST "/admin_session/login" for 127.0.0.1 at 2011-07-17 19:58:07 -0700
  Processing by AdminSessionController#login as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"[token]", "admin_session"=>{"admin_name"=>"[admin_name]", "password"=>"[FILTERED]"}, "x"=>"35", "y"=>"14"}
  [1m[36mAdmin Load (136.4ms)[0m  [1mSELECT `admins`.* FROM `admins` WHERE (LOWER(`admins`.) = '[admin_name]') LIMIT 1[0m
Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') = '[admin_name]') LIMIT 1' at line 1: SELECT `admins`.* FROM `admins` WHERE (LOWER(`admins`.) = '[admin_name]') LIMIT 1
Completed   in 563ms

ActiveRecord::StatementInvalid (Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') = '[admin_name]') LIMIT 1' at line 1: SELECT `admins`.* FROM `admins` WHERE (LOWER(`admins`.) = '[admin_name]') LIMIT 1):
  app/controllers/admin_session_controller.rb:18:in `login'

Rendered /home/tm/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.8ms)
Rendered /home/tm/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (6.7m

это полный след ......

 activerecord (3.0.3) lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
activerecord (3.0.3) lib/active_record/connection_adapters/mysql_adapter.rb:289:in `execute'
activerecord (3.0.3) lib/active_record/connection_adapters/mysql_adapter.rb:619:in `select'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/query_cache.rb:54:in `block in select_all'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/query_cache.rb:68:in `cache_sql'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/query_cache.rb:54:in `select_all'
activerecord (3.0.3) lib/active_record/base.rb:467:in `find_by_sql'
activerecord (3.0.3) lib/active_record/relation.rb:64:in `to_a'
activerecord (3.0.3) lib/active_record/relation/finder_methods.rb:333:in `find_first'
activerecord (3.0.3) lib/active_record/relation/finder_methods.rb:122:in `first'
activerecord (3.0.3) lib/active_record/relation/finder_methods.rb:119:in `first'
activerecord (3.0.3) lib/active_record/base.rb:439:in `first'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/acts_as_authentic/login.rb:121:in `find_with_case'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/acts_as_authentic/login.rb:112:in `find_by_smart_case_login_field'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/scopes.rb:95:in `block in search_for_record'
activerecord (3.0.3) lib/active_record/base.rb:1121:in `with_scope'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/scopes.rb:94:in `search_for_record'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/password.rb:183:in `validate_by_password'
activesupport (3.0.3) lib/active_support/callbacks.rb:415:in `_run_validate_callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `run_callbacks'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/callbacks.rb:87:in `validate'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/validation.rb:64:in `valid?'
/home/tm/.rvm/gems/ruby-1.9.2-p180/bundler/gems/authlogic-a087ad0cba3c/lib/authlogic/session/existence.rb:65:in `save'
app/controllers/admin_session_controller.rb:19:in `login'
actionpack (3.0.3) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.0.3) lib/abstract_controller/base.rb:151:in `process_action'
actionpack (3.0.3) lib/action_controller/metal/rendering.rb:11:in `process_action'
actionpack (3.0.3) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.0.3) lib/active_support/callbacks.rb:445:in `_run__640502527__process_action__573632350__callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `run_callbacks'
actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.0.3) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.3) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.3) lib/active_support/notifications.rb:52:in `instrument'
actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.0.3) lib/action_controller/metal/rescue.rb:17:in `process_action'
actionpack (3.0.3) lib/abstract_controller/base.rb:120:in `process'
actionpack (3.0.3) lib/abstract_controller/rendering.rb:40:in `process'
actionpack (3.0.3) lib/action_controller/metal.rb:138:in `dispatch'
actionpack (3.0.3) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.0.3) lib/action_controller/metal.rb:178:in `block in action'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in `call'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.6.13) lib/rack/mount/route_set.rb:148:in `block in call'
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:93:in `block in recognize'
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:68:in `optimized_each'
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:92:in `recognize'
rack-mount (0.6.13) lib/rack/mount/route_set.rb:139:in `call'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:492:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.2.1) lib/rack/methodoverride.rb:24:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/flash.rb:182:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/cookies.rb:295:in `call'
activerecord (3.0.3) lib/active_record/query_cache.rb:32:in `block in call'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
activerecord (3.0.3) lib/active_record/query_cache.rb:12:in `cache'
activerecord (3.0.3) lib/active_record/query_cache.rb:31:in `call'
activerecord (3.0.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:353:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
activesupport (3.0.3) lib/active_support/callbacks.rb:415:in `_run_call_callbacks'
actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
rack (1.2.1) lib/rack/sendfile.rb:107:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/show_exceptions.rb:46:in `call'
railties (3.0.3) lib/rails/rack/logger.rb:13:in `call'
rack (1.2.1) lib/rack/runtime.rb:17:in `call'
activesupport (3.0.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.2.1) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:10:in `synchronize'
rack (1.2.1) lib/rack/lock.rb:11:in `call'
actionpack (3.0.3) lib/action_dispatch/middleware/static.rb:30:in `call'
railties (3.0.3) lib/rails/application.rb:168:in `call'
railties (3.0.3) lib/rails/application.rb:77:in `method_missing'
railties (3.0.3) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.2.1) lib/rack/content_length.rb:13:in `call'
rack (1.2.1) lib/rack/chunked.rb:15:in `call'
rack (1.2.1) lib/rack/handler/mongrel.rb:67:in `process'
mongrel (1.2.0.pre2) lib/mongrel.rb:165:in `block in process_client'
mongrel (1.2.0.pre2) lib/mongrel.rb:164:in `each'
mongrel (1.2.0.pre2) lib/mongrel.rb:164:in `process_client'
mongrel (1.2.0.pre2) lib/mongrel.rb:291:in `block (2 levels) in run'

спасибо ...

1 Ответ

0 голосов
/ 21 июля 2011

Я собираюсь предположить, что вы на самом деле не набирали «[admin_name]» в текстовое поле, а настраивали журналы, которые вы нам показываете?

Вы говорите Authlogic, какое поле использовать для поля входа?Если только это не одно из значений по умолчанию, это может объяснить, почему сгенерированный SQL не содержит фактического имени столбца для сравнения с ...

SELECT `admins`.* FROM `admins` WHERE (LOWER(`admins`.) = '[admin_name]')
...