method

validates_associated

rails latest stable - Class: ActiveModel::Validations::ClassMethods

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v2.3.8) is shown here.

validates_associated(*attr_names)
public

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

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

    validates_associated :pages, :library
  end

Warning: If, after the above definition, you then wrote:

  class Page < ActiveRecord::Base
    belongs_to :book

    validates_associated :book
  end

…this would specify 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:

  • :message - A custom error message (default is: "is invalid")
  • :on - Specifies when this validation is active (default is :save, other options :create, :update)
  • :if - Specifies a method, proc or string to call to determine if the validation should occur (e.g. :if =&gt; :allow_validation, or :if =&gt; Proc.new { |user| user.signup_step &gt; 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 =&gt; :skip_validation, or :unless =&gt; Proc.new { |user| user.signup_step &lt;= 2 }). The method, proc or string should return or evaluate to a true or false value.

1Note

This is ON by default in :has_many

harm ยท Jun 8, 20095 thanks

When defining a has_many relationship this behaviour is on by default. See has_many documentation, look for the :validate flag.