diff options
Diffstat (limited to 'app/models/member.rb')
-rw-r--r-- | app/models/member.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/app/models/member.rb b/app/models/member.rb index 02f019402..c9c5c2d54 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -110,6 +110,16 @@ class Member < ActiveRecord::Base member_roles.any? {|mr| mr.role_id == role.id && mr.inherited_from.present?} end + # Returns an Array of Project and/or Group from which the given role + # was inherited, or an empty Array if the role was not inherited + def role_inheritance(role) + member_roles. + select {|mr| mr.role_id == role.id && mr.inherited_from.present?}. + map {|mr| mr.inherited_from_member_role.try(:member)}. + compact. + map {|m| m.project == project ? m.principal : m.project} + end + # Returns true if the member's role is editable by user def role_editable?(role, user=User.current) if has_inherited_role?(role) |