Ruby on rails 坎坎和设计不起作用
我已经修改了我的designe表User,以便有一个clearance列。此列是表示用户权限(读、读/写、完全控制)的数字(1-3)。与我正在阅读的所有示例不同,我的Clearance(示例中的角色)不是一个具有关系的单独表,而是designe表(User)中它自己的列。其默认值为1 My ability.rb看起来像这样:Ruby on rails 坎坎和设计不起作用,ruby-on-rails,ruby,devise,cancan,Ruby On Rails,Ruby,Devise,Cancan,我已经修改了我的designe表User,以便有一个clearance列。此列是表示用户权限(读、读/写、完全控制)的数字(1-3)。与我正在阅读的所有示例不同,我的Clearance(示例中的角色)不是一个具有关系的单独表,而是designe表(User)中它自己的列。其默认值为1 My ability.rb看起来像这样: class Ability include CanCan::Ability def initialize(user) user ||= User.new
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.clearance.equal?("2")
can :create, Post
can :manage, Post, :user_id => user.id
else
can :read, :all
end
end
end
我已经把我见过的其他例子(我对Rails很陌生,但除非绝对必要,否则尽量不寻求帮助)都写了下来,目的是让净空值为2的用户可以创建帖子并只管理他们的帖子。我还包括了这一点,因为我还没有为1和3编写代码,所有其他的通关号码都可以读取所有内容
然而,很明显,Cancan认为我的用户(确认的清除级别为2)属于“其他”条款,因此我只能阅读帖子。如果我尝试创建一个新的页面消息,我得到一个警告,您无权访问此页面消息。
我迷路了。帮助?这可能是因为清除列是一个整数吗?在这种情况下,您应该编写
user.clearance==2
,而不是像您编写的那样。就是这样。谢谢你,伙计。就像我说的,我是新来的。但我正在学习。只要Stack允许,我会检查你的答案。