instance method validates_presence_of

Ruby on Rails 4.0.13

Since v2.2.3

Available in: v2.2.3 v2.3.18 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

validates_presence_of(*attr_names)

Validates that the specified attributes are not blank (as defined by Object#blank?), and, if the attribute is an association, that the associated object is not marked for destruction. Happens by default on save.

class Person < ActiveRecord::Base
  has_one :face
  validates_presence_of :face
end

The face attribute must be in the object and it cannot be blank or marked for destruction.

If you want to validate the presence of a boolean field (where the real values are true and false), you will want to use validates_inclusion_of :field_name, in: [true, false].

This is due to the way Object#blank? handles boolean values: false.blank? # => true.

This validator defers to the ActiveModel validation for presence, adding the check to see that an associated object is not marked for destruction. This prevents the parent object from validating successfully and saving, which then deletes the associated object, thus putting the parent object into an invalid state.

Configuration options:

  • :message - A custom error message (default is: “can’t be blank”).

  • :on - Specifies when this validation is active. Runs in all validation contexts by default (nil), other options are :create and :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.

  • :strict - Specifies whether validation should be strict. See ActiveModel::Validation#validates! for more information.

Parameters

attr_names rest
Source
# File activerecord/lib/active_record/validations/presence.rb, line 60
      def validates_presence_of(*attr_names)
        validates_with PresenceValidator, _merge_attributes(attr_names)
      end

Defined in activerecord/lib/active_record/validations/presence.rb line 60 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Validations::ClassMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close