Module: ModelsController::Merge

Extended by:
ActiveSupport::Concern
Included in:
ModelsController
Defined in:
app/controllers/concerns/models_controller/merge.rb

Instance Method Summary collapse

Instance Method Details

#configure_merge ⇒ Object



13
14
15
16
17
# File 'app/controllers/concerns/models_controller/merge.rb', line 13

def configure_merge
  skip_authorization
  @common_root = Model.common_root(*@models)
  @common_root = nil if Model.find_by(path: @common_root)
end

#merge ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/concerns/models_controller/merge.rb', line 19

def merge
  @target = nil
  @template = nil
  if @merge_params[:target] == "==new=="
    @target = Model.create_from(@models.first, name: @models.first.name)
  elsif @merge_params[:target] == "==common_root=="
    path = Model.common_root(*@models)
    name = File.basename(path).humanize.tr("+", " ").careful_titleize
    @target = Model.create_from(@models.first, name: name, path: path)
  elsif @merge_params[:target]
    @target = Model.find_param(@merge_params[:target])
  end
  if @target
    authorize @target
    @target.merge!(@models)
    redirect_to @target, notice: t("models.merge.success")
  else
    skip_authorization
    redirect_to configure_merge_models_path(models: @models.map(&:public_id))
  end
end