覆盖authenticate_user!在设计宝石

时间:2011-10-17 14:26:46

标签: ruby-on-rails ruby-on-rails-3 devise

我在我的应用程序控制器中覆盖了我的身份验证方法

def authenticate_worker!
  if user_signed_in? && current_user.worker?
    authenticate_user!
  else
    super
  end
end 

我一直在

wrong number of arguments (1 for 0)
app/controllers/application_controller.rb:51:in `authenticate_worker!'

知道我错过了什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并修复了这个问题:

class ApplicationController < ActionController::Base
  protected
  def authenticate_user!(opts={}) 
    opts[:scope] = :user
    warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
    flash[:alert] = "I always have to monkeypatch devise... because I'm lazy to use the sorcery gem."
  end
end

所以,包装。起来,复制并粘贴上面的代码,并在确定用户通过身份验证后,将flash [:alert]替换为您要执行的操作。

由于wrong number of arguments (1 for 0)可选参数而发生opts错误。

答案 1 :(得分:0)

找到了它。它正在通过{:force=>true} 不知道那个论点做了什么......