Module: ActiveFedora::Validations

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::Validations
Included in:
Base
Defined in:
lib/active_fedora/validations.rb

Overview

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?.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#required?(key) ⇒ Boolean

Test to see if the given field is required

Parameters:

  • key (Symbol)

    a field

Returns:

  • (Boolean)

    is it required or not



78
79
80
# 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

#save(options = {}) ⇒ Object

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.



49
50
51
# File 'lib/active_fedora/validations.rb', line 49

def save(options = {})
  perform_validations(options) ? super : false
end

#save!(options = {}) ⇒ Object

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.



55
56
57
# File 'lib/active_fedora/validations.rb', line 55

def save!(options = {})
  perform_validations(options) ? super : raise_validation_error
end

#valid?(context = nil) ⇒ Boolean Also known as: validate

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.

Returns:

  • (Boolean)


67
68
69
70
71
# File 'lib/active_fedora/validations.rb', line 67

def valid?(context = nil)
  context ||= default_validation_context
  output = super(context)
  errors.empty? && output
end