[英]Using Rails' CanCan gem to handle a has_and_belongs_to_many situation
[英]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_many
和belongs_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.