RoR - 设计 - 退出错误 - 参数数量错误

时间:2011-04-03 18:40:37

标签: ruby-on-rails-3 devise

我正在尝试在现有的Rails3项目中实现Devise。我在路由和模型中创建了users表及其表。我可以创建一个帐户,然后登录,但如果我转到/ users / sign_out,则会抛出错误:

ArgumentError in Devise/sessionsController#destroy
wrong number of arguments (1 for 0)

框架跟踪的顶部有:

devise (1.2.1) app/controllers/devise/sessions_controller.rb:21:in `signed_in?'
devise (1.2.1) app/controllers/devise/sessions_controller.rb:21:in `destroy'

我的用户模型具有以下内容:

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and 
devise :database_authenticatable, :registerable, :omniauthable,
    :recoverable, :rememberable, :trackable, :validatable

我不确定我应该在哪里寻找添加/删除sign_out操作的参数。任何帮助将不胜感激。

我查看第21行,它有以下内容:

def destroy
  signed_in = signed_in?(resource_name)
  Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
  ...
end

source

这是一个Devise bug吗?或者我没有正确设置?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。这篇文章帮助了我:https://github.com/kristianmandrup/cream/issues/24

我在config.sign_out_all_scopes = false文件中设置了config/initializers/devise.rb。默认情况下,此配置为true。

希望这有帮助。

答案 1 :(得分:0)

我遇到了同样的问题。在我的情况下,这是因为我已经定义了signed_in?作为先前验证实验的辅助方法。一旦我剥离了我以前的会话管理辅助方法,一切都有效。