Ruby on rails 声明性\u授权上的if\u属性语法问题

Ruby on rails 声明性\u授权上的if\u属性语法问题,ruby-on-rails,declarative-authorization,Ruby On Rails,Declarative Authorization,我有一个组织有很多附属机构 一个只有一个组织的任务 所以我可以这样做: m = Mission.first m.organization.affiliations 用户也有很多附属关系,因此我可以: u = User.first u.affiliations 在声明性授权中,如果用户隶属于任务组织,我希望用户能够管理任务 我正在尝试这个: has_permission_on :missions, :to => [:manage] do if_attribute [:affilia

我有一个组织有很多附属机构 一个只有一个组织的任务

所以我可以这样做:

m = Mission.first
m.organization.affiliations 
用户也有很多附属关系,因此我可以:

u = User.first
u.affiliations
在声明性授权中,如果用户隶属于任务组织,我希望用户能够管理任务

我正在尝试这个:

has_permission_on :missions, :to => [:manage] do
  if_attribute [:affiliations, {:mission => :organization} ]  => intersects_with {
    user.affiliations.type_admin
  }
end
但我得到了一个错误:

[:affiliations, {:mission=>:organization}] is not a symbol

语法有什么问题吗?

我想这可能适合您

has_permission_on :missions, :to => [:manage] do
  if_attribute :organization => { :affiliations => intersects_with { user.affiliates.type_admin } }
end

DSL编译了,但它没有给我管理任务的权限。在服务器窗口中,我看到任务和组织为零:权限被拒绝:新的不允许为#On#。如果我对组织强制拼写错误,我会得到预期的错误,并看到任务和组织对象存在。。。调用组织时出错,我知道了。。。这是一项新任务,因此没有与之相关的组织。只有当任务得救时才会发生。但这并不能解释为什么导弹和组织存在错误。。。