Método auxiliar para verificar erros de validação

O Rails 5 tem um novo recurso que permite obter nomes de erros de validação amigáveis ​​à máquina.

Mas você pode usá-lo agora com a gem de detalhes de erros de modelo ativos .

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

Aqui está um método auxiliar simples para verificar se existe um determinado erro de validação em um registro.

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

Uso:

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