2010-12-14 29 views
0

我把这个Migrating from Authlogic to Devise 转交给它,并且按照它来获得devise所需的数据库结构。 不过我让我的sign_in页从Authlogic迁移到Devise时出现的问题

wrong number of arguments (2 for 1) 

这个错误这是我的要求:

{"commit"=>"Sign in","authenticity_token"=>"oWXrE+EdhO4ScuaBzPBqCnpYsal1QcDC483ygVSs0fw=","user"=>{"password"=>"password", "email"=>"[email protected]"}} 

我用Rails 2.3.8,因此使用设计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' 

任何与监狱长依赖?

+0

似乎是错误不会在你的会话/新认为,一切都看起来不错,以我在那里。该错误是否在“应用程序跟踪”中提供了有关错误发生位置的更多详细信息? – aNoble 2010-12-14 17:02:07

回答

0

该错误似乎发生在User.find调用中,这很奇怪。你有什么可能覆盖默认的查找方法?

在控制台中试一试,看看是否有错误。

User.find(:first, :conditions=>{:email=>'[email protected]'}) 
1

我有同样的问题,使用监狱长0.10.7和设计1.0.8 我试图在控制台User.find,是OK。

为了解决这个问题,我删除了类方法authenticate我的用户型号:

#def self.authenticate(login, pass) 
# find(:first, :conditions => ["login = ? AND password = ?", login, sha1(pass)]) 
#end