Patch #36730 ยป find_or_initialize_by.patch
| app/models/member.rb | ||
|---|---|---|
| 208 | 208 |
project_ids = Array.wrap(attributes[:project_ids] || attributes[:project_id]) |
| 209 | 209 |
role_ids = Array.wrap(attributes[:role_ids]) |
| 210 | 210 |
project_ids.each do |project_id| |
| 211 |
member = Member.find_or_new(project_id, principal)
|
|
| 211 |
member = Member.find_or_initialize_by(:project_id => project_id, :user_id => principal.id)
|
|
| 212 | 212 |
member.role_ids |= role_ids |
| 213 | 213 |
member.save |
| 214 | 214 |
members << member |
| ... | ... | |
| 217 | 217 |
members |
| 218 | 218 |
end |
| 219 | 219 | |
| 220 |
# Finds or initializes a Member for the given project and principal |
|
| 221 |
def self.find_or_new(project, principal) |
|
| 222 |
project_id = project.is_a?(Project) ? project.id : project |
|
| 223 |
principal_id = principal.is_a?(Principal) ? principal.id : principal |
|
| 224 | ||
| 225 |
member = Member.find_by_project_id_and_user_id(project_id, principal_id) |
|
| 226 |
member ||= Member.new(:project_id => project_id, :user_id => principal_id) |
|
| 227 |
member |
|
| 228 |
end |
|
| 229 | ||
| 230 | 220 |
protected |
| 231 | 221 | |
| 232 | 222 |
def validate_role |
| app/models/project.rb | ||
|---|---|---|
| 1001 | 1001 |
def add_inherited_member_roles |
| 1002 | 1002 |
if inherit_members? && parent |
| 1003 | 1003 |
parent.memberships.each do |parent_member| |
| 1004 |
member = Member.find_or_new(self.id, parent_member.user_id)
|
|
| 1004 |
member = Member.find_or_initialize_by(:project_id => self.id, :user_id => parent_member.user_id)
|
|
| 1005 | 1005 |
parent_member.member_roles.each do |parent_member_role| |
| 1006 | 1006 |
member.member_roles << |
| 1007 | 1007 |
MemberRole.new(:role => parent_member_role.role, |
| test/integration/api_test/issues_test.rb | ||
|---|---|---|
| 437 | 437 |
issue = Issue.find(1) |
| 438 | 438 |
assert_equal 1, issue.tracker_id # Bug |
| 439 | 439 |
issue.update(:status_id => 2) # Assigned |
| 440 |
member = Member.find_or_new(issue.project, User.find_by_login('dlopper'))
|
|
| 440 |
member = Member.find_by(:project => issue.project, :user => User.find_by(:login => 'dlopper'))
|
|
| 441 | 441 |
assert_equal [2], member.role_ids # Developer |
| 442 | 442 | |
| 443 | 443 |
get '/issues/1.xml?include=allowed_statuses', :headers => credentials('dlopper', 'foo')
|