我被告知我不应该params[:user_id]
在我的视图文件中使用变量.相同的规则是否适用于session
变量?
如果没有,那我该怎么办?首先将它分配给实例变量,然后在视图中使用它?这似乎很烦人,因为我必须为我的每一个动作做这件事.我想我可以把这个重复的代码放在一个方法中,该方法被该类中的所有其他操作调用.
此建议来自构成Rails应用程序的不同组件之间"关注点分离"的最佳实践.确定当前用户的最佳位置是在您的控制器中.您可以在此处访问您的参数和/或会话,以确定是否有人通过身份验证插件直接或间接登录.然后,如果您在视图中需要此信息,只需将其存储在@user等变量中,该变量将在视图中自动显示以供显示.这样做,如果您以后更改了身份验证机制,则可以在不触及视图的情况下执行此操作,这可以很好地指示您在应用程序中的不同组件之间实现了良好的分离.
同样回答你问题的第二部分:
我想我可以把这个重复的代码放在一个方法中,该方法被该类中的所有其他操作调用.
这可以通过控制器中的:before_filter轻松完成,您可以指向检查身份验证的方法,并创建任何必要的实例变量,以便在控制器中的操作之间共享.