проверка пользовательских сообщений для рельсов 3 - PullRequest
93 голосов
/ 22 марта 2011

В Rails появился новый способ проверки атрибутов внутри модели.Когда я использую

validates :title, :presence => true

, это работает, но когда я пытаюсь добавить пользовательское сообщение

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

, генерируется ошибка

Unknown validator: 'message'

Ответы [ 4 ]

192 голосов
/ 22 марта 2011

Попробуйте это

validates :title, presence: { message: "Story title is required" }
18 голосов
/ 19 декабря 2011

На самом деле, я сделал это лучше. Если вы хотите удалить заголовок поля из сообщения, вы должны использовать его в своем _form.htmk.erb представлении:

Как вы можете видеть внутри этого представления:

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

Заменить на:

<ul>
  <% @article.errors.each_with_index do |msg, i| %>
  <li><%= msg[1] %></li>
  <% end %>
</ul>
1 голос
/ 13 августа 2014

Пользовательское сообщение для логического выражения с условиями может быть:

validates :foo,  inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar?
0 голосов
/ 26 июня 2013

Вы можете использовать HUMANIZED_ATTRIBUTES рельсов 3.Например, в приведенном выше случае это будет выглядеть следующим образом:

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

Это выдаст вам сообщение об ошибке, заменив заголовок атрибута модели на историю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...