Rails 4按属性限制关联

时间:2015-01-28 16:53:18

标签: ruby-on-rails ruby ruby-on-rails-4

由于项目需要高度可配置的权限,我有一个复杂的关联嵌套。模型亮点是

class User < ActiveRecord::Base
    has_one :group_membership
    has_one :group, through: :group_membership

    has_one :group_permission, through: :group, source: :group_permissions

    enum role: [:group_leader, :user]
end

class Group < ActiveRecord::Base
    has_many :group_memberships
    has_many :users, through: :group_memberships

    has_many :group_permissions
end

class GroupPermission < ActiveRecord::Base
    belongs_to :group
end

class GroupMembership < ActiveRecord::Base
    belongs_to :group
    belongs_to :user
end

GroupPermission group_id有一个role,一个allowed_actions和一个role

因此,对于每个Group,可能有多个group_permissions具有不同的allowed_actions,具体取决于role

我希望能够说出@user.group_permission并将group_permission范围归结为@users role,但我不确定如果只通过协会就可以实现

更新

我想另一种问这个问题的方法是,如果我在User上定义一个方法,例如

def group_permissions
    group.group_permissions.where(role: role)
end

这为我提供了此用户的正确group_permissions记录。我希望能够通过协会来做到这一点,而且我不确定这是否可能

0 个答案:

没有答案