summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-01-24 08:54:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-01-24 08:54:04 +0000
commit9d3f3289b887a25f6d84bbb84afedad831e41be6 (patch)
treee45699e51a0f19288152372f8fe490333359c5aa /app
parent3ba5415d5622ec3071943712a36935bcbe24e93b (diff)
downloadredmine-9d3f3289b887a25f6d84bbb84afedad831e41be6.tar.gz
redmine-9d3f3289b887a25f6d84bbb84afedad831e41be6.zip
Memorize project override roles.
git-svn-id: http://svn.redmine.org/redmine/trunk@13934 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/models/project.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index e0994b4ba..83c678bda 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -216,8 +216,11 @@ class Project < ActiveRecord::Base
end
def override_roles(role)
+ @override_members ||= member_principals.
+ where("#{Principal.table_name}.type IN (?)", ['GroupAnonymous', 'GroupNonMember']).to_a
+
group_class = role.anonymous? ? GroupAnonymous : GroupNonMember
- member = member_principals.where("#{Principal.table_name}.type = ?", group_class.name).first
+ member = @override_members.detect {|m| m.principal.is_a? group_class}
member ? member.roles.to_a : [role]
end