diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2010-02-03 17:47:47 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2010-02-03 17:47:47 +0000 |
commit | 155083ec9722e2c01ec3323d7a421fa059a80ba9 (patch) | |
tree | 43c285de14fadd2ed21d892fa4b0d26427c7bd7a /app/models/role.rb | |
parent | b86b9b898e4dd5c0d9eb2d7362c47a6a513b2015 (diff) | |
download | redmine-155083ec9722e2c01ec3323d7a421fa059a80ba9.tar.gz redmine-155083ec9722e2c01ec3323d7a421fa059a80ba9.zip |
Change Role#anonymous and #non_member so they generate the record as needed.
While creating tests, it was a common occurrence to lost the builtin roles
because they are only created in the migrations. This makes them behave like
User#anonymous.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3363 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/role.rb')
-rw-r--r-- | app/models/role.rb | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/app/models/role.rb b/app/models/role.rb index 22ce2a650..d1bebdb6d 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -120,14 +120,30 @@ class Role < ActiveRecord::Base find(:all, :conditions => {:builtin => 0}, :order => 'position') end - # Return the builtin 'non member' role + # Return the builtin 'non member' role. If the role doesn't exist, + # it will be created on the fly. def self.non_member - find(:first, :conditions => {:builtin => BUILTIN_NON_MEMBER}) || raise('Missing non-member builtin role.') + non_member_role = find(:first, :conditions => {:builtin => BUILTIN_NON_MEMBER}) + if non_member_role.nil? + non_member_role = create(:name => 'Non member', :position => 0) do |role| + role.builtin = BUILTIN_NON_MEMBER + end + raise 'Unable to create the non-member role.' if non_member_role.new_record? + end + non_member_role end - # Return the builtin 'anonymous' role + # Return the builtin 'anonymous' role. If the role doesn't exist, + # it will be created on the fly. def self.anonymous - find(:first, :conditions => {:builtin => BUILTIN_ANONYMOUS}) || raise('Missing anonymous builtin role.') + anonymous_role = find(:first, :conditions => {:builtin => BUILTIN_ANONYMOUS}) + if anonymous_role.nil? + anonymous_role = create(:name => 'Anonymous', :position => 0) do |role| + role.builtin = BUILTIN_ANONYMOUS + end + raise 'Unable to create the anonymous role.' if anonymous_role.new_record? + end + anonymous_role end |