gpt4 book ai didi

ruby-on-rails - 约束失败时从路由重定向

转载 作者:行者123 更新时间:2023-12-04 11:25:27 25 4
gpt4 key购买 nike

路由约束失败时,我想重定向到其他网址

Route.rb

匹配'/u'=>'user#signin',:constraints => BlacklistDomain

blacklist_domain.rb

class BlacklistDomain
BANNED_DOMAINS = ['domain1.com', 'domain2.com']

def matches?(request)
if BANNED_DOMAINS.include?(request.host)
## I WANT TO REDIRECT HERE WHEN THE CONDITION FAILS
else
return true
end

end
end

最佳答案

由于Rails路由是按顺序执行的,因此您可以通过以下方式模拟条件登录:

# config/routes.rb
match '/u' => 'controller#action', :constraints => BlacklistDomain.new
match '/u' => 'user#signin'

第一行检查是否满足约束条件(即,该请求是否来自列入黑名单的域)。如果满足约束条件,则将请求路由到 controller#action(当然,将其替换)。

如果无法满足约束条件(即,请求未列入黑名单),则该请求将被路由到 user#signing

由于此条件逻辑可在您的 route 得到有效处理,因此可以简化约束代码:
# blacklist_domain.rb
class BlacklistDomain
BANNED_DOMAINS = ['domain1.com', 'domain2.com']

def matches?(request)
if BANNED_DOMAINS.include?(request.host)
return true
end
end
end

关于ruby-on-rails - 约束失败时从路由重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com