Module: MergeRequests::AssignsMergeParams

Included in:
AutoMerge::BaseService, BaseService
Defined in:
app/services/concerns/merge_requests/assigns_merge_params.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



5
6
7
# File 'app/services/concerns/merge_requests/assigns_merge_params.rb', line 5

def self.included(klass)
  raise "#{self} can not be included in #{klass} without implementing #current_user" unless klass.method_defined?(:current_user)
end

Instance Method Details

#assign_allowed_merge_params(merge_request, merge_params) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/services/concerns/merge_requests/assigns_merge_params.rb', line 9

def assign_allowed_merge_params(merge_request, merge_params)
  known_merge_params = merge_params.to_h.with_indifferent_access.slice(*MergeRequest::KNOWN_MERGE_PARAMS)

  # Not checking `MergeRequest#can_remove_source_branch` as that includes
  # other checks that aren't needed here.
  known_merge_params.delete(:force_remove_source_branch) unless current_user.can?(:push_code, merge_request.source_project)

  merge_request.merge_params.merge!(known_merge_params)

  # Delete the known params now that they're assigned, so we don't try to
  # assign them through an `#assign_attributes` later.
  # They could be coming in as strings or symbols
  merge_params.to_h.with_indifferent_access.except!(*MergeRequest::KNOWN_MERGE_PARAMS)
end