Una manera de tener un control completo sobre los mensajes es utilizar un bloque personalizado validate
en el modelo. p.ej. para comprobar que un campo no está en blanco, sería de esta manera:
class MyModel < ActiveRecord::Base
validate do |model|
model.errors.add_to_base("My Custom message") if user.field.blank?
end
end
add_to_base
está destinada a la adición de los mensajes que no están relacionados con un campo individual en particular (por ejemplo, si una combinación de varios campos es ilegal). Esto significa que el CSS para resaltar su campo no válido no se agregará. Puede solucionar esto añadiendo un mensaje nulo a los errores de su campo, p.
model.errors.add(:field, nil)
alternativa, echa un vistazo a custom-err-message plug-in - este plugin le da la opción de no tener su mensaje de error de validación con el prefijo del nombre del atributo.
Actualización:
add_to_base
está obsoleta desde Rails 3. En la siguiente se puede utilizar en su lugar: model_instance.errors.add(:base, "Msg")
Ref: https://apidock.com/rails/ActiveRecord/Errors/add_to_base
Saludos mikej, el plugin de err-mensaje personalizado hizo lo que yo quería – pythonandchips
También hay una [gema] (https://github.com/thethanghn/custom-err-msg) que funcionó para mí en Rails 4 – dusan