validator validations validates_presence_of validates validate rails method custom create ruby-on-rails ruby ruby-on-rails-3 validation activerecord

ruby on rails - validations - mensaje personalizado de validación para rieles 3



rails validates if (4)

Rails ha introducido una nueva forma de validar atributos dentro del modelo. Cuando uso

validates :title, :presence => true

funciona pero cuando trato de agregar un mensaje personalizado

validates :title, :presence => true,:message => "Story title is required"

se genera un error

Unknown validator: ''message''


En realidad, hice esto de una mejor manera. Si desea eliminar el título del campo del mensaje, debe usar esto en su vista _form.htmk.erb:

Como puedes ver dentro de esta vista:

<ul> <% @article.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul>

Reemplazar por:

<ul> <% @article.errors.each_with_index do |msg, i| %> <li><%= msg[1] %></li> <% end %> </ul>


Prueba esto

validates :title, presence: { message: "Story title is required" }


Puede usar HUMANIZED_ATTRIBUTES of rails 3. Por ejemplo en el caso anterior, será como:

HUMANIZED_ATTRIBUTES = { :title => "story" } def self.human_attribute_name(attr, options={}) HUMANIZED_ATTRIBUTES[attr.to_sym] || super end

Le dará un mensaje de error, reemplazando el título del atributo del modelo con la historia.


Un mensaje personalizado para un booleano con condicionales podría ser:

validates :foo, inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar?