Commit b91539d6 authored by Matija Čupić's avatar Matija Čupić

Refactor VariablesController#save_multiple

parent 121d84d7
...@@ -35,17 +35,12 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -35,17 +35,12 @@ class Projects::VariablesController < Projects::ApplicationController
def save_multiple def save_multiple
respond_to do |format| respond_to do |format|
format.json do format.json do
variables = [] variables = variables_from_params(variables_params)
variables_params[:variables].each do |variable_hash| return head :bad_request unless variables.all?(&:valid?)
variable = project.variables.where(key: variable_hash[:key]).first_or_initialize(variable_hash)
variable.assign_attributes(variable_hash) unless variable.new_record?
return head :bad_request unless variable.valid?
variables << variable variables.each(&:save)
end head :ok
variables.each { |variable| variable.save }
end end
head :ok
end end
end end
...@@ -71,6 +66,15 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -71,6 +66,15 @@ class Projects::VariablesController < Projects::ApplicationController
params.permit(variables: [*variable_params_attributes]) params.permit(variables: [*variable_params_attributes])
end end
def variables_from_params(params)
params[:variables].map do |variable_hash|
variable = project.variables.where(key: variable_hash[:key])
.first_or_initialize(variable_hash)
variable.assign_attributes(variable_hash) unless variable.new_record?
variable
end
end
def variable_params_attributes def variable_params_attributes
%i[id key value protected _destroy] %i[id key value protected _destroy]
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment