Module: Themis::AR::BaseExtension::ClassMethods

Defined in:
lib/themis/ar/base_extension.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#has_themis_validation?(name) ⇒ Boolean

Verify that model has validation set with passed name.

Parameters:

  • name (Symbol)

    name of validation set

Returns:

  • (Boolean)


70
71
72
# 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(name, options, &block) ⇒ Object #has_validation(name_1, name_2, options, &block) ⇒ Object #has_validation(name, validation_module, options, &block) ⇒ Object

Overloads:

  • #has_validation(name, options, &block) ⇒ Object

    Declare validation set using block

    Examples:

    has_validation :soft, :nested => :account, :default => true do |validation|
      validation.validates_presence_of :some_date
    end

    Parameters:

    • name (Symbol)

      name of validation set

    • options (Hash)

      options: :default, :nested

    • block (Proc)

      proc which receives ModelProxy and defines validators

    Options Hash (options):

    • :default (Boolean)

      make it validation be used by default

    • :nested (Symbol, Array<Symbol>)

      association which should be affected when validation #use_validation is called

  • #has_validation(name_1, name_2, options, &block) ⇒ Object

    Declare validation in 2 sets using a block:

    Examples:

    has_validation :soft, :hard :nested => :account, :default => true do |validation|
      validation.validates_presence_of :some_date
    end
  • #has_validation(name, validation_module, options, &block) ⇒ Object

    Declare validation set on model using validation module or(and) block.

    Examples:

    has_validation :soft, SoftValidation, :default => true

    Parameters:

    • name (Symbol)

      name of validation set

    • validation_module (Module)

      module extended by Validation.

    • options (Hash)

      options: :default, :nested

    • block (Proc)

      proc which receives ModelProxy and defines validators

    Options Hash (options):

    • :default (Boolean)

      make it validation be used by default

    • :nested (Symbol, Array<Symbol>)

      association which should be affect when validation #use_validation is called



61
62
63
64
65
66
# 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) ⇒ Object

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

Examples:

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

Parameters:

  • args (Array<Symbol>, Hash)

    an association or associations which should be effected



85
86
87
88
89
90
91
92
93
94
95
96
# 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