我有一个使用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
由于
答案 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