Case :- 1. In case of email confirmation one needs case insensitive comparison
2. In case of password confirmation one needs case sensitive comparison
[ci skip] Update Guides for case_sensitive option in confirmation validation
[ci skip]
Closes#20792.
Custom validation methods are implemented in terms of
callbacks. The `validate` callback chain can't be halted using return
values of individual callbacks.
- Remove deprecated `[]=`
- Fix duplicate `errors#add` example. The second code example was
originally `[]=`, replace it with `[] <<`.
- Improve explanations for `errors#add` and `errors#full_messages`
Follow-up to PR #19457 (closed after borking my git history). Apologies
for the duplicate PR.
cc @kaspth
To be able to return type of validator, one can now call `details`
on Errors instance:
```ruby
class User < ActiveRecord::Base
validates :name, presence: true
end
```
```ruby
user = User.new; user.valid?; user.errors.details
=> {name: [{error: :blank}]}
```
Removed ```The `size` helper is an alias for `length`.``` line. If you use this "nonexist" helper, you will get an error message like this:
```
ArgumentError: Unknown validator: 'SizeValidator'
...
```
Maybe wanted to mean ```validates_size_of``` helper as an alias for ```validates_length_of``` helper.
According to the guide, ":save" value for the "on:" validation helper
was available like below
validates :name, presence: true, on: :save
but this was never available according to the implementation of the
valid? method, which is below
# Runs all the validations within the specified context. Returns
+true+ if
# no errors are found, +false+ otherwise.
#
# If the argument is +false+ (default is +nil+), the context is set
to <tt>:create</tt> if
# <tt>new_record?</tt> is +true+, and to <tt>:update</tt> if it is
not.
#
# Validations with no <tt>:on</tt> option will run no matter the
context. Validations with
# some <tt>:on</tt> option will only run in the specified context.
def valid?(context = nil)
context ||= (new_record? ? :create : :update)
output = super(context)
errors.empty? && output
end
So the documentation was always wrong since the PR proposed by
@neerajdotname ( #10287 ) was rejected.