mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-22 22:06:45 +00:00
37 lines
1.2 KiB
Ruby
37 lines
1.2 KiB
Ruby
module ConfigHelper
|
|
extend ActiveSupport::Concern
|
|
|
|
# Justin French tip
|
|
def with_config(preference_name, temporary_value)
|
|
old_value = ValidatesTimeliness.send(preference_name)
|
|
ValidatesTimeliness.send(:"#{preference_name}=", temporary_value)
|
|
yield
|
|
ensure
|
|
ValidatesTimeliness.send(:"#{preference_name}=", old_value)
|
|
end
|
|
|
|
def reset_validation_setup_for(model_class)
|
|
model_class.reset_callbacks(:validate)
|
|
model_class._validators.clear
|
|
model_class.timeliness_validated_attributes = [] if model_class.respond_to?(:timeliness_validated_attributes)
|
|
model_class.undefine_attribute_methods
|
|
# This is a hack to avoid a disabled super method error message after an undef
|
|
model_class.instance_variable_set(:@generated_attribute_methods, nil)
|
|
model_class.instance_variable_set(:@generated_timeliness_methods, nil)
|
|
end
|
|
|
|
module ClassMethods
|
|
def with_config(preference_name, temporary_value)
|
|
original_config_value = ValidatesTimeliness.send(preference_name)
|
|
|
|
before(:all) do
|
|
ValidatesTimeliness.send(:"#{preference_name}=", temporary_value)
|
|
end
|
|
|
|
after(:all) do
|
|
ValidatesTimeliness.send(:"#{preference_name}=", original_config_value)
|
|
end
|
|
end
|
|
end
|
|
end
|