April 1, 2019
This blog is part of our Rails 6 series.
Rails 6 added of_kind? on
ActiveModel::Errors
. It returns true if the ActiveModel::Errors
object has
provided a key and message associated with it. The default message is
:invalid
.
of_kind? is same as ActiveModel::Errors#added? but, it doesn't take extra options as a parameter.
Let's checkout how it works.
>> class User < ApplicationRecord
>> validates :name, presence: true
>> end
>> user = User.new
=> => #<User id: nil, name: nil, password: nil, created_at: nil, updated_at: nil>
>> user.valid?
=> false
>> user.errors
=> #<ActiveModel::Errors:0x00007fc462a1d140 @base=#<User id: nil, name: nil, password: nil, created_at: nil, updated_at: nil>, @messages={:name=>["can't be blank"]}, @details={:name=>[{:error=>:blank}]}>
>> user.errors.of_kind?(:name)
=> false
>> user.errors.of_kind?(:name, :blank)
=> true
>> user.errors.of_kind?(:name, "can't be blank")
=> true
>> user.errors.of_kind?(:name, "is blank")
=> false
Here is the relevant pull request.
If this blog was helpful, check out our full blog archive.