Проблема при переходе с Authlogic на Devise - PullRequest
0 голосов
/ 14 декабря 2010

Я передал это Миграция с Authlogic на Devise и последовал этому, чтобы подготовить структуру базы данных, необходимую для devise.Однако я получаю эту ошибку на своей странице входа

wrong number of arguments (2 for 1)

Это мой запрос:

{"commit"=>"Sign in","authenticity_token"=>"oWXrE+EdhO4ScuaBzPBqCnpYsal1QcDC483ygVSs0fw=","user"=>{"password"=>"password", "email"=>"email@email.com"}}

Я использую Rails 2.3.8 и, следовательно, использую Devise v 1.0.

Это мои сеансы / новый взгляд:

<% form_for resource_name, resource, :url => session_path(resource_name) do |f| -%>
  <p><%= f.label :email %></p>
  <p><%= f.text_field :email %></p>
  <p><%= f.label :password %></p>
  <p><%= f.password_field :password %></p>

  <p><%= f.submit "Sign in" %></p>
<% end -%>

Есть идеи, как заставить это работать?Спасибо !

РЕДАКТИРОВАТЬ

Вот трассировка стека:

ArgumentError (wrong number of arguments (2 for 1)):
devise (1.0.8) lib/devise/models/database_authenticatable.rb:139:in `find_for_authentication'
devise (1.0.8) lib/devise/models/database_authenticatable.rb:117:in `authenticate'
devise (1.0.8) lib/devise/strategies/database_authenticatable.rb:16:in `authenticate!'
warden (1.0.3) lib/warden/strategies/base.rb:53:in `_run!'
warden (1.0.3) lib/warden/proxy.rb:303:in `_run_strategies_for'
warden (1.0.3) lib/warden/proxy.rb:298:in `each'
warden (1.0.3) lib/warden/proxy.rb:298:in `_run_strategies_for'
warden (1.0.3) lib/warden/proxy.rb:271:in `_perform_authentication'
warden (1.0.3) lib/warden/proxy.rb:90:in `authenticate'
devise (1.0.8) lib/devise/controllers/helpers.rb:36:in `authenticate'
devise (1.0.8) app/controllers/sessions_controller.rb:19:in `create'
warden (1.0.3) lib/warden/manager.rb:35:in `call'
warden (1.0.3) lib/warden/manager.rb:34:in `catch'
warden (1.0.3) lib/warden/manager.rb:34:in `call'

Какое отношение имеет зависимость от надзирателя?

Ответы [ 2 ]

1 голос
/ 30 января 2011

У меня была такая же проблема, с использованием Warden 0.10.7 и devise 1.0.8 Я попробовал User.find в консоли и все было в порядке.

Чтобы исправить это, я удалил метод класса authenticate в моей пользовательской модели:

#def self.authenticate(login, pass)
#  find(:first, :conditions => ["login = ? AND password = ?", login, sha1(pass)])
#end
0 голосов
/ 15 декабря 2010

Ошибка возникает при вызове User.find, что странно. У вас есть что-нибудь, что может переопределить метод поиска по умолчанию?

Попробуйте это в консоли и посмотрите, нет ли ошибки.

User.find(:first, :conditions=>{:email=>'email@email.com'})
...