仅在管理员时管理cancan中的用户

时间:2012-12-22 23:04:45

标签: ruby-on-rails-3 cancan

我有这些模特:

公司 CompanyUser 用户

CompanyUser有一个属性admin,允许他删除该公司的其他用户等。

在康康舞中,我现在有了这个但是出了点问题:

  can [:edit, :update, :read, :destroy, :promote, :demote], CompanyUser, :company_users => { :user_id => user.id, :admin => true }

我想只允许用户在他是该公司的管理员时编辑,更新,... CompanyUser。我该如何定义?

1 个答案:

答案 0 :(得分:0)

此代码应与您正在寻找的解决方案类似:

def initialize(user)                                                          
user ||= User.new
can [:manage, :promote, :demote], CompanyUser do |cu|
  user.company_user.admin == true &&            # user is admin and
  user.comany_user.company_id == cu.company_id  # user is in the same company
end

如果与您的确切情况不符,请发布公司,用户和公司用户的型号。