这是我的工作,我觉得这不是一个好主意,而且是反模式:
经过身份验证的用户可以根据用户状态定向到家庭控制器和控制器,并将其定向到不同的路由。 如果我这样做是不好的:
if user.status == "accepted"
redirect_to ### some view
else
redirect_to ### another view
end
我考虑过使用CanCan
,但我认为这可能有点矫枉过正
答案 0 :(得分:1)
取决于案件的。这可能是可以接受的。我不能提出建议,因为这会表达意见,但是,我可以给你一个替代方案,因为你显然对如何以不同的方式做这件事感兴趣。
使用Sorcery authentication gem时(据我所知,Devise提供了相同的方法),将过滤器应用于控制器,将任何未登录的用户重定向到页面你指定(重定向到登录页面是明智的。)
这是使用before_filter
实现的(实际上与before_action
相同)。输入的方法被构建到一个链中,该链在每个控制器的动作上被调用(除非参数另有说明)。如果任何过滤方法redirect
或render
s,则链序执行停止。这可以在服务器的日志中看到。
如果您需要将相同条件并重定向应用于多项操作,则此方法非常有效。如果情况并非如此,并且它是您进行此项检查的唯一地点,那么您当前的实施可能就足够了。