我目前正在进行上传图片的项目。有用户,专辑和图片。我添加了一个友谊模型,以便人们可以像社交网络一样互相交流。但是,我注意到我在视图中放了很多<% if current_user.friends.include?(@user) %>
来检查我正在显示的页面的用户是否是登录客户端的朋友,因此允许他们拥有某些特权和表单,等等。有没有比用if / else语句污染我的观点更好的方法或地点?此外,我不觉得我的方法非常安全,因为有人总是可以手动输入网址并弄乱他们不应该使用的信息。
答案 0 :(得分:2)
您需要一个授权框架,例如CanCan。
在功能文件中,只有当用户是所有者的朋友时,才将其配置为用户can
,例如查看内容或编辑其他内容。然后在视图或控制器中,您可以检查用户是否有权执行相应的操作。
有关根据模型的详细信息设置能力的具体细节(即所有者是否是当前用户的朋友),请转到this documentation并查找“条件哈希”。
答案 1 :(得分:1)
考虑使用类似mosaic-access gem的内容,它允许您为当前登录的用户提供白名单/黑名单控制器和特定操作。