From 48f1b97aea193cab82f283e73a203362cf652690 Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Thu, 12 Mar 2015 11:07:29 +0100 Subject: [PATCH] extracted method --- app/models/code_ocean/file.rb | 8 ++++---- app/models/concerns/default_values.rb | 8 ++++++++ app/models/execution_environment.rb | 4 ++-- app/models/exercise.rb | 3 ++- app/models/file_type.rb | 5 ++--- 5 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 app/models/concerns/default_values.rb diff --git a/app/models/code_ocean/file.rb b/app/models/code_ocean/file.rb index ccfa7f46..d156f8db 100644 --- a/app/models/code_ocean/file.rb +++ b/app/models/code_ocean/file.rb @@ -2,6 +2,8 @@ require File.expand_path('../../../uploaders/file_uploader', __FILE__) module CodeOcean class File < ActiveRecord::Base + include DefaultValues + DEFAULT_WEIGHT = 1.0 ROLES = %w(main_file reference_implementation regular_file teacher_defined_test user_defined_file user_defined_test) TEACHER_DEFINED_ROLES = ROLES - %w(user_defined_file) @@ -74,10 +76,8 @@ module CodeOcean private :set_ancestor_values def set_default_values - self.content ||= '' - self.hidden ||= false - self.read_only ||= false - self.weight ||= DEFAULT_WEIGHT if teacher_defined_test? + set_default_values_if_present(content: '', hidden: false, read_only: false) + set_default_values_if_present(weight: DEFAULT_WEIGHT) if teacher_defined_test? end private :set_default_values diff --git a/app/models/concerns/default_values.rb b/app/models/concerns/default_values.rb new file mode 100644 index 00000000..e5c7f231 --- /dev/null +++ b/app/models/concerns/default_values.rb @@ -0,0 +1,8 @@ +module DefaultValues + def set_default_values_if_present(options = {}) + options.each do |attribute, value| + send(:"#{attribute}=", send(:"#{attribute}") || value) if has_attribute?(attribute) + end + end + private :set_default_values_if_present +end diff --git a/app/models/execution_environment.rb b/app/models/execution_environment.rb index dc244386..0ecc2424 100644 --- a/app/models/execution_environment.rb +++ b/app/models/execution_environment.rb @@ -1,5 +1,6 @@ class ExecutionEnvironment < ActiveRecord::Base include Creation + include DefaultValues VALIDATION_COMMAND = 'whoami' @@ -20,8 +21,7 @@ class ExecutionEnvironment < ActiveRecord::Base validates :run_command, presence: true def set_default_values - self.permitted_execution_time ||= 60 if has_attribute?(:permitted_execution_time) - self.pool_size ||= 0 if has_attribute?(:pool_size) + set_default_values_if_present(permitted_execution_time: 60, pool_size: 0) end private :set_default_values diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 28f9781f..8c3abc9b 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -1,6 +1,7 @@ class Exercise < ActiveRecord::Base include Context include Creation + include DefaultValues after_initialize :generate_token after_initialize :set_default_values @@ -47,7 +48,7 @@ class Exercise < ActiveRecord::Base end def set_default_values - self.public ||= false + set_default_values_if_present(public: false) end private :set_default_values diff --git a/app/models/file_type.rb b/app/models/file_type.rb index e9d92fb2..b4eb02a5 100644 --- a/app/models/file_type.rb +++ b/app/models/file_type.rb @@ -1,5 +1,6 @@ class FileType < ActiveRecord::Base include Creation + include DefaultValues AUDIO_FILE_EXTENSIONS = %w(.aac .flac .m4a .mp3 .ogg .wav .wma) IMAGE_FILE_EXTENSIONS = %w(.bmp .gif .jpeg .jpg .png) @@ -24,9 +25,7 @@ class FileType < ActiveRecord::Base end def set_default_values - self.binary ||= false if has_attribute?(:binary) - self.executable ||= false if has_attribute?(:executable) - self.renderable ||= false if has_attribute?(:renderable) + set_default_values_if_present(binary: false, executable: false, renderable: false) end private :set_default_values