ruby-on-rails – 使用CanCan将索引页面上的视图限制为user_id

ruby-on-rails – 使用CanCan将索引页面上的视图限制为user_id,第1张

概述我正在使用Devise和Cancan进行rails 3.2.6应用程序.在应用程序中,我允许用户创建一个文档,其中包含在表单中收集的一些信息.然后,我想允许用户在localhost:3000 / users / 1 / document文档索引页面上列出他们的文档,这是有效的.什么是无效的,我试图通过用另一个数字替换/ users /:id / documents来限制用户能够看到其他人的文档. 我正在使用Devise和Cancan进行rails 3.2.6应用程序.在应用程序中,我允许用户创建一个文档,其中包含在表单中收集的一些信息.然后,我想允许用户在localhost:3000 / users / 1 / document文档索引页面上列出他们的文档,这是有效的.什么是无效的,我试图通过用另一个数字替换/ users /:ID / documents来限制用户能够看到其他人的文档.

我正在使用康康,并尝试过两者

可以:index,document,:user_ID =>用户身份
 can:read,:user_ID =>用户身份

然后在document控制器索引方法上

if can? :read,document @documents = @user.documentselse redirect_to root_pathend

也试过:索引以及…但这不起作用.我也在使用load_and_authorize_resource ..

对我失踪的任何想法?

我会说,cancan正在为我的用户管理和用户控制器工作,管理员可以创建,列出和编辑用户,所以我知道cancan一般都在工作.它还用于更新和删除用户文档.只是索引功能不起作用.

class Ability include CanCan::Ability   def initialize(user)     user ||= User.new # guest user (not logged in)     if user.ID       if user.has_role? :user         can :create,document         can :read,:user_ID => user.ID         can :update,:user_ID => user.ID       end     end   end end
解决方法 您必须确保未登录的用户以及user.ID与document的user_ID(文档所有者)不同的用户无权读取所有文档.

class Ability  include CanCan::Ability  def initialize(account)    user ||= User.new  #non-logged-in user    # logged in users    if user.ID and user.has_role?(:user)      #content owners      can :manage,:user_ID => user.ID      #other logged-in users      can [:show,:create],document    end  endend

小心你没有像can一样的行:read,:all或can:read,document如果你说cancan已经在工作,你很可能会在某处提供权限.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 使用CanCan将索引页面上的视图限制为user_id全部内容,希望文章能够帮你解决ruby-on-rails – 使用CanCan将索引页面上的视图限制为user_id所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1273251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存