Ruby on rails 可以在CanCan中调用能力范围内的其他类实例吗?
问题是我有两个模型-Project和Ticket(属于Project)。我想在项目到期时拒绝访问票证创建(即,我希望用户无法为过期项目创建新票证) 我如何才能拒绝在CanCan功能中为用户创建票证? 差不多Ruby on rails 可以在CanCan中调用能力范围内的其他类实例吗?,ruby-on-rails,cancan,Ruby On Rails,Cancan,问题是我有两个模型-Project和Ticket(属于Project)。我想在项目到期时拒绝访问票证创建(即,我希望用户无法为过期项目创建新票证) 我如何才能拒绝在CanCan功能中为用户创建票证? 差不多 if user.role? :superuser can :read, :all can :create, Ticket do |ticket| ticket.project.expired? end end 问题是“项目”方法没有在任何地方定义。 我非常感谢您的帮助。
if user.role? :superuser
can :read, :all
can :create, Ticket do |ticket|
ticket.project.expired?
end
end
问题是“项目”方法没有在任何地方定义。
我非常感谢您的帮助。在授予许可之前,您只需测试潜在票证的项目是否已过期。关键是对项目授予的是权限,而不是票证 为此,我可能会定义一种特殊的能力
if user.role? :superuser
can :read, :all
can :create_ticket_for_project, Project do |project|
!project.expired?
end
end
然后在控制器中使用:
authorize! :create_ticket_for_project, @project
这实际上解决了我的问题。谢谢。我不认为CanCan能力中的动作可以和controller中的动作命名不同。