Вы можете использовать метод валидатора, чтобы записать ошибку при обнаружении изменений в поле только для чтения.
Class User
validate :name_not_changed
private
def name_not_changed
return unless name_changed?
errors.add(:name, 'Cannot change name of User')
end
end
Это действительно необходимо? Если вы делаете свой атрибут доступным только для чтения, почему вы все еще оставляете возможность его изменения и дополнительно нуждаетесь в ошибках проверки для этой операции? В идеале, вы не должны позволять использовать это имя при обновлении моделей, и на этом история заканчивается, ошибок валидации не требуется.