Если вы хотите поддерживать несколько языков, вам нужно найти другое решение, которое транслирует сообщения об ошибках и имена атрибутов. Поэтому я создал новый валидатор для каждого.
validators/values_not_equal_validator.rb
:
class ValuesNotEqualValidator < ActiveModel::EachValidator
def validate(record)
@past = Hash.new
super
end
def validate_each(record, attribute, value)
@past.each do |k, v|
if v == value
record.errors.add(attribute, I18n.t('errors.messages.should_not_be_equal_to') + " " + record.class.human_attribute_name(k))
end
end
@past[attribute] = value
end
end
Я называю это в модели следующим образом:
class User < ActiveRecord::Base
validates :forename, :surname, values_not_equal: true
end
И я перевожу это так:
de:
activerecord:
attributes:
user:
forename: 'Vorname'
surname: 'Nachname'
errors:
messages:
should_not_be_equal_to: 'darf nicht gleich sein wie'