mirror of
https://github.com/redmine/redmine.git
synced 2025-11-10 15:26:03 +01:00
Replace Member.find_or_new with ActiveRecord's find_or_initialize_by (#36730).
git-svn-id: http://svn.redmine.org/redmine/trunk@21456 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -208,7 +208,7 @@ class Member < ActiveRecord::Base
|
|||||||
project_ids = Array.wrap(attributes[:project_ids] || attributes[:project_id])
|
project_ids = Array.wrap(attributes[:project_ids] || attributes[:project_id])
|
||||||
role_ids = Array.wrap(attributes[:role_ids])
|
role_ids = Array.wrap(attributes[:role_ids])
|
||||||
project_ids.each do |project_id|
|
project_ids.each do |project_id|
|
||||||
member = Member.find_or_new(project_id, principal)
|
member = Member.find_or_initialize_by(:project_id => project_id, :user_id => principal.id)
|
||||||
member.role_ids |= role_ids
|
member.role_ids |= role_ids
|
||||||
member.save
|
member.save
|
||||||
members << member
|
members << member
|
||||||
@@ -217,16 +217,6 @@ class Member < ActiveRecord::Base
|
|||||||
members
|
members
|
||||||
end
|
end
|
||||||
|
|
||||||
# Finds or initializes a Member for the given project and principal
|
|
||||||
def self.find_or_new(project, principal)
|
|
||||||
project_id = project.is_a?(Project) ? project.id : project
|
|
||||||
principal_id = principal.is_a?(Principal) ? principal.id : principal
|
|
||||||
|
|
||||||
member = Member.find_by_project_id_and_user_id(project_id, principal_id)
|
|
||||||
member ||= Member.new(:project_id => project_id, :user_id => principal_id)
|
|
||||||
member
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def validate_role
|
def validate_role
|
||||||
|
|||||||
@@ -1001,7 +1001,7 @@ class Project < ActiveRecord::Base
|
|||||||
def add_inherited_member_roles
|
def add_inherited_member_roles
|
||||||
if inherit_members? && parent
|
if inherit_members? && parent
|
||||||
parent.memberships.each do |parent_member|
|
parent.memberships.each do |parent_member|
|
||||||
member = Member.find_or_new(self.id, parent_member.user_id)
|
member = Member.find_or_initialize_by(:project_id => self.id, :user_id => parent_member.user_id)
|
||||||
parent_member.member_roles.each do |parent_member_role|
|
parent_member.member_roles.each do |parent_member_role|
|
||||||
member.member_roles <<
|
member.member_roles <<
|
||||||
MemberRole.new(:role => parent_member_role.role,
|
MemberRole.new(:role => parent_member_role.role,
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base
|
|||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
assert_equal 1, issue.tracker_id # Bug
|
assert_equal 1, issue.tracker_id # Bug
|
||||||
issue.update(:status_id => 2) # Assigned
|
issue.update(:status_id => 2) # Assigned
|
||||||
member = Member.find_or_new(issue.project, User.find_by_login('dlopper'))
|
member = Member.find_by(:project => issue.project, :user => User.find_by(:login => 'dlopper'))
|
||||||
assert_equal [2], member.role_ids # Developer
|
assert_equal [2], member.role_ids # Developer
|
||||||
|
|
||||||
get '/issues/1.xml?include=allowed_statuses', :headers => credentials('dlopper', 'foo')
|
get '/issues/1.xml?include=allowed_statuses', :headers => credentials('dlopper', 'foo')
|
||||||
|
|||||||
Reference in New Issue
Block a user