[フレーム]
Last Updated: February 25, 2016
·
276
· scarfacedeb

Helper method to check validation errors

Rails 5 got a new feature that allows to get machine-friendly name of validation error.

But you can use it now with activemodel-errorsdetails gem.

More: https://cowbell-labs.com/2015-01-22-active-model-errors-details.html

Here's a simple helper method to check if given validation error exists on a record.

module CheckValidationDetails
 # Check if the given error exists on given attribute
 #
 # @param attribute [Symbol] model attribute
 # @param error [Symbol] machine-friendly error name
 # @return [Boolean] whether or not any given error exists
 def error?(attribute, error)
 errors.details.key?(attribute) && errors.details[attribute].any? { |err| err[:error] == error }
 end
end

Usage:

class User
 include CheckValidationDetails
end

user.new(name: nil, email: "not_taken@email.com")
user.save
user.error? :name, :blank # == true
user.error? :email, :taken # == false

AltStyle によって変換されたページ (->オリジナル) /