rails cancan允许用户只编辑*他们的数据,但查看每个人

时间:2015-11-06 23:56:35

标签: ruby-on-rails ruby-on-rails-4 devise cancan

我有一个使用Devise和cancan的rails应用程序。我希望只允许用户编辑他们自己的数据,但仍然可以查看所有人。

我有:

{3, 9, 11, 6}

我也有:

{{1,3,8}, {4,9,2}, {6,11,14}, {24,6,1}}

但我仍然可以编辑和删除其他用户评论。当我不能这样做的时候。为什么?我究竟做错了什么? Rails 4 设计2.5.2 康康1.6

由于

2 个答案:

答案 0 :(得分:1)

您已将user_id指定为用户模型的列名:

can :manage, User, user_id: user.id

我愿意打赌用户没有user_id列 - 它只有id列。你想要的是这个:

can :manage, User, id: user.id

通过查看您的schema.rb文件并确保({1}}列中有(或不是))来仔细检查。实际ID列名为user_id,未列在id中,但实际上存在于数据库表中。

另外,请确保您确实要允许schema.rb权限。 :manage符号非常强大,允许用户对相关对象执行任何操作,包括删除它。

答案 1 :(得分:1)

如果允许用户编辑自己的数据,请更改

can :manage, User, user_id: user.id

can :update, User