module ActiveFedora::Validations
Active Fedora
Validations
, adapted from Active Record¶ ↑
Active Fedora
includes the majority of its validations from ActiveModel::Validations
all of which accept the :on
argument to define the context where the validations are active. Active Record will always supply either the context of :create
or :update
dependent on whether the model is a new_record?
.
Public Instance Methods
Test to see if the given field is required @param [Symbol] key a field @return [Boolean] is it required or not
# File lib/active_fedora/validations.rb, line 78 def required?(key) self.class.validators_on(key).any? { |v| v.is_a? ActiveModel::Validations::PresenceValidator } end
The validation process on save can be skipped by passing :validate => false
. The regular Base#save
method is replaced with this when the validations module is mixed in, which it is by default.
# File lib/active_fedora/validations.rb, line 49 def save(options = {}) perform_validations(options) ? super : false end
Attempts to save the record just like Base#save
but will raise a RecordInvalid
exception instead of returning false if the record is not valid.
# File lib/active_fedora/validations.rb, line 55 def save!(options = {}) perform_validations(options) ? super : raise_validation_error end
Runs all the validations within the specified context. Returns true if no errors are found, false otherwise.
If the argument is false (default is nil
), the context is set to :create
if new_record?
is true, and to :update
if it is not.
Validations
with no :on
option will run no matter the context. Validations
with some :on
option will only run in the specified context.
# File lib/active_fedora/validations.rb, line 67 def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output end
Protected Instance Methods
# File lib/active_fedora/validations.rb, line 84 def default_validation_context new_record? ? :create : :update end
# File lib/active_fedora/validations.rb, line 88 def raise_validation_error raise RecordInvalid, self end
Private Instance Methods
Overwrite run validations to include callbacks.
# File lib/active_fedora/validations.rb, line 99 def run_validations! _run_validation_callbacks { super } end