Ruby on rails 如何指定cancan的条件

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

我将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/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
同样的东西也可以出版