Method: WorkflowRule.copy_one
- Defined in:
- app/models/workflow_rule.rb
.copy_one(source_tracker, source_role, target_tracker, target_role) ⇒ Object
Copies a single set of workflows from source to target
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/models/workflow_rule.rb', line 56 def self.copy_one(source_tracker, source_role, target_tracker, target_role) unless source_tracker.is_a?(Tracker) && !source_tracker.new_record? && source_role.is_a?(Role) && !source_role.new_record? && target_tracker.is_a?(Tracker) && !target_tracker.new_record? && target_role.is_a?(Role) && !target_role.new_record? raise ArgumentError.new("arguments can not be nil or unsaved objects") end if source_tracker == target_tracker && source_role == target_role false else transaction do where(:tracker_id => target_tracker.id, :role_id => target_role.id).delete_all connection.insert( "INSERT INTO #{WorkflowRule.table_name}" \ " (tracker_id, role_id, old_status_id, new_status_id," \ " author, assignee, field_name, #{connection.quote_column_name 'rule'}, type)" \ " SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id," \ " author, assignee, field_name, #{connection.quote_column_name 'rule'}, type" \ " FROM #{WorkflowRule.table_name}" \ " WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}" ) end true end end |