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

Move variable loading into before_action

parent b91539d6
class Projects::VariablesController < Projects::ApplicationController class Projects::VariablesController < Projects::ApplicationController
before_action :variable, only: [:show, :update, :destroy] before_action :variable, only: [:show, :update, :destroy]
before_action :variables, only: [:save_multiple]
before_action :authorize_admin_build! before_action :authorize_admin_build!
layout 'project_settings' layout 'project_settings'
...@@ -35,10 +36,9 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -35,10 +36,9 @@ 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_from_params(variables_params) return head :bad_request unless @variables.all?(&:valid?)
return head :bad_request unless variables.all?(&:valid?)
variables.each(&:save) @variables.each(&:save)
head :ok head :ok
end end
end end
...@@ -66,15 +66,6 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -66,15 +66,6 @@ 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
...@@ -82,4 +73,13 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -82,4 +73,13 @@ class Projects::VariablesController < Projects::ApplicationController
def variable def variable
@variable ||= project.variables.find(params[:id]).present(current_user: current_user) @variable ||= project.variables.find(params[:id]).present(current_user: current_user)
end end
def variables
@variables = variables_params[:variables].map do |variable_hash|
variable = project.variables.where(key: variable_hash[:key])
.first_or_initialize(variable_hash).present(current_user: current_user)
variable.assign_attributes(variable_hash) unless variable.new_record?
variable
end
end
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