method
validates_associated
v2.0.3 -
Show latest stable
- Class:
ActiveRecord::Validations::ClassMethods
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 => :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.
1Note
Use this for has_one associations instead
I have confirmed that validates_associated doesn't work with has_one associations, like @amasses said.
This however worked for me, so I recommend to use validates on the has_one association directly, like this:
class Book < ActiveRecord::Base
has_one :cover, validates: true
end