【发布时间】:2015-11-06 23:56:34
【问题描述】:
我有一个使用 Devise 和 cancan 的 rails 应用程序。我希望只允许用户编辑他们自己的数据,但仍然可以查看其他所有人。
我有:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role == "member"
their own only
can :read, User
can :manage, User, user_id: user.id
elsif user.role == "guest"
can :read, User
end
我也有:
class User < ActiveRecord::Base
#attr_accessible :name , :email # Include default devise modules. Others available are:
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
ROLES = %w[member guest]
def is?( requested_role )
self.role == requested_role.to_s
end
end
但我仍然可以编辑和删除其他用户的 cmets。当我不应该做的时候。为什么?我究竟做错了什么? 导轨 4 设计 2.5.2 康康1.6
谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 devise cancan