繁体   English   中英

Ruby on Rails-CanCan可以通过很多对很多宝石

[英]Ruby on Rails - CanCan Gem with Many to Many Through

在Rails 4上。我很难理解如何授权用户能够通过CanCan编辑组织的信息。

用例1:用户有很多组织; 组织有很多用户。 此关系信息存储在第三个模型UserOrganization中(具有:user_id:organization_id属性)。 因此,基本上,只要他们通过第三个模型链接,用户就可以编辑组织信息。 我了解了这段代码,但是不起作用(在capability.rb中):

def initialize(user)
  can [:show, :edit, :update], Organization, user_organizations: { user_id: user.id }
end

(表示未定义的方法user_id)

用例2:第四个模型是OrganizationDetails。 一个组织可以有多个organization_details。 我还希望用户能够编辑其组织的详细信息。

换句话说,用户->有很多-> UserOrganizations->属于->组织->有很多-> OrganizationDetails。

如何在CanCan中格式化此格式,以便用户可以创建/编辑通过UserOrganization模型链接到的组织详细信息。 谢谢。 所有控制器在模型中都有load_and_authorize_resource以及适当的has_manybelongs_to代码。

想通了如何做到这一点。

限制组织:

can [:show, :edit, :update], Organization do |organization|
  UserOrganization.where(user_id: user.id, organization_id: organization.id).any?
end

按组织限制

can [:show, :edit, :update], OrganizationDetail do |organization_detail|
  UserOrganization.where(user_id: user.id, organization_id: organization_detail.organization.id).any?
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM