我有一个带有users、articles和collaborations的Rails应用程序。下面是几种关系:
User has_many :articles
User has_many :collaborations
Article belongs_to :users
Article has_many :collaborations
# Collaboration has collaboration.id collaboration.user_id and collaboration.article_id.
Collaboration belongs_to :users
Collaboration belongs_to :articles通过合作,我能够成功地访问用户和文章,所以我认为我的应用程序中的所有设置都是正确的。好的,在问题上。
我使用的是CanCan,角色是:admin。基本上,我只希望:admin能够创建帖子和协作,而且我的工作也是正确的。is...how的问题是,我是否将该角色写入我的ability.rb文件,以便非管理员的用户仍然可以在他们参与协作的文章上进行协作?“
我应该如何用ability.rb写这个。这就像我想说的:“不是管理员的用户可以管理文章,如果他们是文章协作的一部分。”
对不起,我还没喝咖啡。)这是我的ability.rb。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.role == "admin"
can :manage, :all
else
can :read, Article
# this is where I want to say: can :manage if part of collaboration for article
end
end
end发布于 2012-10-08 13:08:38
您可以在ability.rb文件中尝试这样的操作,.Just定义用户表中的角色,并在模型文件中使用
角色、“行政”、“客人”、“其他”
if user.role == "Admin"
if user.role == "admin"
can :manage, :all
else
can :read, Article
end
endhttps://stackoverflow.com/questions/12747313
复制相似问题