1
0
mirror of https://github.com/meineerde/redmine.git synced 2025-10-17 17:01:01 +00:00

Use regular instance methods instead of association extensions.

Rails 5.1 seems to mess things up in this particular case (role.workflow_rules.copy calls the extension declare in Tracker model).

git-svn-id: http://svn.redmine.org/redmine/trunk@16597 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2017-06-03 08:04:13 +00:00
parent f6defca16d
commit 44c748f968
7 changed files with 17 additions and 8 deletions

View File

@ -60,7 +60,7 @@ class RolesController < ApplicationController
if request.post? && @role.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Role.find_by_id(params[:copy_workflow_from]))
@role.workflow_rules.copy(copy_from)
@role.copy_workflow_rules(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to roles_path

View File

@ -44,7 +44,7 @@ class TrackersController < ApplicationController
if @tracker.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from]))
@tracker.workflow_rules.copy(copy_from)
@tracker.copy_workflow_rules(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to trackers_path

View File

@ -61,7 +61,8 @@ class Role < ActiveRecord::Base
before_destroy :check_deletable
has_many :workflow_rules, :dependent => :delete_all do
def copy(source_role)
WorkflowRule.copy(nil, source_role, nil, proxy_association.owner)
ActiveSupport::Deprecation.warn "role.workflow_rules.copy is deprecated and will be removed in Redmine 4.0, use role.copy_worflow_rules instead"
proxy_association.owner.copy_workflow_rules(source_role)
end
end
has_and_belongs_to_many :custom_fields, :join_table => "#{table_name_prefix}custom_fields_roles#{table_name_suffix}", :foreign_key => "role_id"
@ -261,6 +262,10 @@ class Role < ActiveRecord::Base
self
end
def copy_workflow_rules(source_role)
WorkflowRule.copy(nil, source_role, nil, self)
end
# Find all the roles that can be given to a project member
def self.find_all_givable
Role.givable.to_a

View File

@ -29,10 +29,10 @@ class Tracker < ActiveRecord::Base
has_many :issues
has_many :workflow_rules, :dependent => :delete_all do
def copy(source_tracker)
WorkflowRule.copy(source_tracker, nil, proxy_association.owner, nil)
ActiveSupport::Deprecation.warn "tracker.workflow_rules.copy is deprecated and will be removed in Redmine 4.0, use tracker.copy_worflow_rules instead"
proxy_association.owner.copy_workflow_rules(source_tracker)
end
end
has_and_belongs_to_many :projects
has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
acts_as_positioned
@ -121,6 +121,10 @@ class Tracker < ActiveRecord::Base
core_fields
end
def copy_workflow_rules(source_tracker)
WorkflowRule.copy(source_tracker, nil, self, nil)
end
# Returns the fields that are disabled for all the given trackers
def self.disabled_core_fields(trackers)
if trackers.present?

View File

@ -29,7 +29,7 @@ class WorkflowRule < ActiveRecord::Base
# Copies workflows from source to targets
def self.copy(source_tracker, source_role, target_trackers, target_roles)
unless source_tracker.is_a?(Tracker) || source_role.is_a?(Role)
raise ArgumentError.new("source_tracker or source_role must be specified")
raise ArgumentError.new("source_tracker or source_role must be specified, given: #{source_tracker.class.name} and #{source_role.class.name}")
end
target_trackers = [target_trackers].flatten.compact

View File

@ -59,7 +59,7 @@ class RoleTest < ActiveSupport::TestCase
target = Role.new(:name => 'Target')
assert target.save
target.workflow_rules.copy(source)
target.copy_workflow_rules(source)
target.reload
assert_equal rule_count, target.workflow_rules.size
end

View File

@ -47,7 +47,7 @@ class TrackerTest < ActiveSupport::TestCase
target = Tracker.new(:name => 'Target', :default_status_id => 1)
assert target.save
target.workflow_rules.copy(source)
target.copy_workflow_rules(source)
target.reload
assert_equal rules_count, target.workflow_rules.size
end