Module: Spira::Validations

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

Defined Under Namespace

Modules: ClassMethods Classes: UniquenessValidator

Instance Method Summary collapse

Instance Method Details

#perform_validations(options = {}) ⇒ Object (protected)


70
71
72
73
# File 'lib/spira/validations.rb', line 70

def perform_validations(options={})
  perform_validation = options[:validate] != false
  perform_validation ? valid?(options[:context]) : true
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.


44
45
46
# File 'lib/spira/validations.rb', line 44

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.


50
51
52
# File 'lib/spira/validations.rb', line 50

def save!(options={})
  perform_validations(options) ? super : raise(RecordInvalid.new(self))
end

#valid?(context = nil) ⇒ Boolean

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.


62
63
64
65
66
# File 'lib/spira/validations.rb', line 62

def valid?(context = nil)
  context ||= (new_record? ? :create : :update)
  output = super(context)
  errors.empty? && output
end