我正在尝试在现有的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
这是一个Devise bug吗?或者我没有正确设置?
答案 0 :(得分:2)
我遇到了同样的问题。这篇文章帮助了我:https://github.com/kristianmandrup/cream/issues/24,
我在config.sign_out_all_scopes = false
文件中设置了config/initializers/devise.rb
。默认情况下,此配置为true。
希望这有帮助。
答案 1 :(得分:0)
我遇到了同样的问题。在我的情况下,这是因为我已经定义了signed_in?作为先前验证实验的辅助方法。一旦我剥离了我以前的会话管理辅助方法,一切都有效。