remove field name from object validation message remove field name from object validation message ruby ruby

remove field name from object validation message


In rails 3.2.6, you can set this in a locale file (e.g., config/locales/en.yml):

en:  errors:    format: "%{message}"

Otherwise, the default format is "%{attribute} %{message}".


One way to have complete control over the messages is to use a custom validate block in the model. e.g. to check that a field is not blank it would be like this:

class MyModel < ActiveRecord::Base  validate do |model|    model.errors.add_to_base("My Custom message") if user.field.blank?  endend

add_to_base is intended for adding messages that aren't related to a particular individual field (e.g. if a combination of multiple fields is illegal). This means that the CSS to highlight your invalid field won't get added. You can work arround this by also adding a nil message to the errors for your field e.g.

model.errors.add(:field, nil)

Alternatively, check out custom-err-message plugin - this plugin gives you the option to not have your custom validation error message prefixed with the attribute name.

Update:

add_to_base is deprecated since Rails 3. The following can be used instead:model_instance.errors.add(:base, "Msg")
Ref: https://apidock.com/rails/ActiveRecord/Errors/add_to_base