我知道有一个关于它的wiki页面,但由于我对Rails很新,所以我在理解该页面时遇到了很多困难。
我不得不为我的用户覆盖注册控制器。当用户无法登录时,我希望将他重定向到我的自定义登录页面。但是应用程序将他发送到gem内的登录页面。
我怎样才能做到这一点? 我应该把这个课程放在哪里,如何更改? 我有多个模型,每个模型都有不同的登录页面。 如何为每个模型设置范围?
class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
端
Devise是一个强大的宝石,但是一些wiki页面并不认为可以有很多新的程序员
答案 0 :(得分:1)
我直接在/lib
进行了我的身份验证失败覆盖课程。
这是一个简单的版本,展示了如何为用户处理不同的范围。
class MyAuthFailure < Devise::FailureApp
# add different cases here for diff scopes.
def redirect_url
if warden_options[:scope] == :user
root_path
elsif warden_options[:scope] == :admin
admin_root_path
end
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
您将此课程放在/lib/my_auth_failure.rb
答案 1 :(得分:0)
此解决方案效果很好,但如果您不执行本文中的建议,您将遇到测试问题:
您的测试仍会使用默认值重定向。
例如:
current_path.should == signin_path
会失败,因为当前路径实际上是users/sign_in
或其他东西。