module Themis::AR::BaseExtension::ClassMethods

Public Instance Methods

has_themis_validation?(name) click to toggle source

Verify that model has {ValidationSet validation set} with passed name. @param [Symbol] name name of validation set

# File lib/themis/ar/base_extension.rb, line 70
def has_themis_validation?(name)
  themis_validation_sets.keys.include?(name.to_sym)
end
has_validation(*args_and_options, &block) click to toggle source

@overload has_validation(name, options, &block)

Declare validation set using block
@example
  has_validation :soft, :nested => :account, :default => true do |validation|
    validation.validates_presence_of :some_date
  end
@param [Symbol] name name of validation set
@param [Hash] options options: :default, :nested
@param [Proc] block proc which receives {ModelProxy} and defines validators
@option options [Boolean] :default make it validation be used by default
@option options [Symbol, Array<Symbol>] :nested association which should be affected when validation {#use_validation} is called

@overload has_validation(name_1, name_2, options, &block)

Declare validation in 2 sets using a block:
@example
  has_validation :soft, :hard :nested => :account, :default => true do |validation|
    validation.validates_presence_of :some_date
  end

@overload has_validation(name, validation_module, options, &block)

Declare validation set on model using {Themis::Validation validation module} or(and) block.
@example
  has_validation :soft, SoftValidation, :default => true
@param [Symbol] name name of validation set
@param [Module] validation_module module extended by {Themis::Validation}.
@param [Hash] options options: :default, :nested
@param [Proc] block proc which receives {ModelProxy} and defines validators
@option options [Boolean] :default make it validation be used by default
@option options [Symbol, Array<Symbol>] :nested association which should be affect when validation {#use_validation} is called
# File lib/themis/ar/base_extension.rb, line 61
def has_validation(*args_and_options, &block)
  options           = args_and_options.extract_options!
  names, args       = args_and_options.partition { |obj| obj.class.in?([String, Symbol]) }
  validation_module = args.first
  Themis::AR::HasValidationMethod.new(self, names, validation_module, options, block).execute!
end
use_nested_validation_on(*args) click to toggle source

Set the default value of the :nested option for validations. @example

use_nested_validation_on :author

@example

use_nested_validation_on :author, :comments

@example

use_nested_validation_on :author => {:posts => :comments }

@param [Array<Symbol>, Hash] args an association or associations which should be effected

# File lib/themis/ar/base_extension.rb, line 85
def use_nested_validation_on(*args)
  if themis_default_nested
    warn "WARNING: default nested validation is already defined: " \
         "`#{themis_default_nested.inspect}` on #{self}"
  end

  args         = args.flatten
  deep_nested  = args.extract_options!
  associations = args + deep_nested.keys

  UseNestedValidationOnMethod.new(self, associations, deep_nested).execute
end