instance method
validate
Ruby on Rails 4.1.16
Since v3.0.20Signature
validate(*args, &block)
Adds a validation method or block to the class. This is useful when overriding the validate instance method becomes too unwieldy and you’re looking for more descriptive declaration of your validations.
This can be done with a symbol pointing to a method:
class Comment include ActiveModel::Validations validate :must_be_friends def must_be_friends errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee) end end
With a block which is passed with the current record to be validated:
class Comment include ActiveModel::Validations validate do |comment| comment.must_be_friends end def must_be_friends errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee) end end
Or with a block where self points to the current record to be validated:
class Comment include ActiveModel::Validations validate do errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee) end end
Options:
-
:on- Specifies the contexts where this validation is active. You can pass a symbol or an array of symbols. (e.g.on: :createoron: :custom_validation_contextoron: [: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, orif: Proc.new { |user| user.signup_step > 2 }). The method, proc or string should return or evaluate to atrueorfalsevalue. -
:unless- Specifies a method, proc or string to call to determine if the validation should not occur (e.g.unless: :skip_validation, orunless: Proc.new { |user| user.signup_step <= 2 }). The method, proc or string should return or evaluate to atrueorfalsevalue.
Parameters
-
argsrest -
blockblock
Source
# File activemodel/lib/active_model/validations.rb, line 143
def validate(*args, &block)
options = args.extract_options!
if options.key?(:on)
options = options.dup
options[:if] = Array(options[:if])
options[:if].unshift lambda { |o|
Array(options[:on]).include?(o.validation_context)
}
end
args << options
set_callback(:validate, *args, &block)
end
Defined in activemodel/lib/active_model/validations.rb line 143
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveModel::Validations::ClassMethods