Ruby on rails 如何指定cancan的条件
我将Rails 2.3.11与cancan 1.1一起使用。Ruby on rails 如何指定cancan的条件,ruby-on-rails,cancan,Ruby On Rails,Cancan,我将Rails 2.3.11与cancan 1.1一起使用。 我想添加一个新角色,允许用户创建/编辑属于某个特定组织的“出版物”以及在这些“出版物”中创建/编辑“文章”。正如我提到的,我无法尝试文档中所有的新示例,因为我正在运行旧的cancan 1.1。这是我在Ability.rb中尝试的一个示例: class Ability include CanCan::Ability #additional roles require changes be made to config/envi
我想添加一个新角色,允许用户创建/编辑属于某个特定组织的“出版物”以及在这些“出版物”中创建/编辑“文章”。正如我提到的,我无法尝试文档中所有的新示例,因为我正在运行旧的cancan 1.1。这是我在Ability.rb中尝试的一个示例:
class Ability
include CanCan::Ability
#additional roles require changes be made to config/environment.rb ROLES constant
def initialize(user)
user ||= User.new # Guest user
# Multirole environment
if user.role? :admin
can :manage, :all
can :archive, Article
can :review, Article
end
#several other roles ...
#This is not working...I'm specify the organization that I want the super_user to be able to create and edit for
if user.role? :super_user
can [:create, :edit], Publication, :organization_id => 21
can [:create, :edit], Article, :organization_id => 21
end
我有以下三种型号:
class Organization < ActiveRecord::Base
#validations here
has_many :publications, :dependent => :destroy
has_many :articles, :through => :publications
end
class Publication < ActiveRecord::Base
#validations here
has_many :articles, :dependent => :destroy
end
class Article < ActiveRecord::Base
#validations here ...
belongs_to :publication
validates_associated :publication
#...
end
类组织:销毁
有许多:文章,:至=>:出版物
结束
类发布:销毁
结束
类文章
谢谢您的建议。y不更新也可以在您指定不工作时,您是否确实收到错误或授权未按预期工作感谢您的回复。我正在将应用程序迁移到Rails 3,但目前还不能在生产环境中运行。我将cancan升级到1.3.4,这是我可以在Rails 2.3.11上运行的最高版本。当您指定不工作时,您是否实际收到错误或授权未按预期工作授权正在工作,但不受组织id的限制。因此,新角色赋予超级用户创建任何出版物的权限,而不考虑组织。我试着从cancan wiki的“can:read,Project,:category=>{:visible=>true}”中学习这个例子,这个例子看起来很相似,只是在我的例子中,我使用的是id而不是布尔值。那么你在你的控制器操作
创建和编辑中授权了你的文章和发布对象了吗创建、@article
和aurhorize!:编辑,@article
同样的东西也可以出版