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