Module: ValidatesAssociatedWithContext::ClassMethods

Defined in:
lib/validates_associated_with_context/associated_with_context.rb

Instance Method Summary collapse

Instance Method Details

#validates_associated_with_context(*attr_names) ⇒ Object

Validates whether the associated object or objects are all valid. Works with any kind of association.

class Book < ActiveRecord::Base
  has_many :pages
  belongs_to :library

  validates_associated_with_context :pages, :library
end

WARNING: This validation must not be used on both ends of an association. Doing so will lead to a circular dependency and cause infinite recursion.

NOTE: This validation will not fail if the association hasn’t been assigned. If you want to ensure that the association is both present and guaranteed to be valid, you also need to use validates_presence_of.

Configuration options:

  • :context - The validation context to use.

  • :inherit_context - When true, the validation context is passed to the associated model.

  • :message - A custom error message (default is: “is invalid”).

  • :on - Specifies the contexts where this validation is active. Runs in all validation contexts by default nil. You can pass a symbol or an array of symbols. (e.g. on: :create or on: :custom_validation_context or on: [:create, :custom_validation_context])

  • :if - Specifies a method, proc, or string to call to determine if the validation should occur (e.g. if: :allow_validation, or if: Proc.new { |user| user.signup_step > 2 }). The method, proc or string should return or evaluate to a true or false value.

  • :unless - Specifies a method, proc, or string to call to determine if the validation should not occur (e.g. unless: :skip_validation, or unless: Proc.new { |user| user.signup_step <= 2 }). The method, proc, or string should return or evaluate to a true or false value.



92
93
94
# File 'lib/validates_associated_with_context/associated_with_context.rb', line 92

def validates_associated_with_context(*attr_names)
  validates_with ValidatesAssociatedWithContext::AssociatedWithContextValidator, _merge_attributes(attr_names)
end