Подтвердить что ты не робот

Проверяет: наличие vs validates_presence_of с использованием рельсов 3

У меня есть пара простых моделей, которые связаны так:

Модели

class Task < ActiveRecord::Base
  belongs_to :user
  validates :name, :presence => true, :message => 'Name cannot be blank, Task not saved'
end

class User < ActiveRecord::Base
  has_many :tasks
end

В ПРОСМОТРЕ имеет такой вызов: user.tasks < - тогда я выполняю задачи

Проблема:

В модели задач -

когда я использую:

validates :name, :presence => true ,  :message => 'Name cannot be blank, Task not saved'

Я получаю ошибку 500:

ActionView::Template::Error (uninitialized constant User::Task):
NameError in View file

когда я использую:

validates_presence_of :name

Все работает.

Я думал, что оба метода проверки выше, где то же самое... проблема связана с ассоциациями и как валидация привязывается к связанным моделям. У меня есть подозрение, что что-то происходит с тем, как все связано, но это просто догадка.

Любая помощь будет оценена. Большое спасибо.

4b9b3361

Ответ 1

Когда вы используете новый формат validates :name, вы можете поместить несколько проверок в одну строку, а не иметь несколько строк для каждого типа проверки. Из-за этого, когда Rails попадает в ваш параметр :message, он считает его скорее методом проверки, чем сообщением, связанным с :presence. Вместо этого попробуйте:

validates :name, :presence => {:message => 'Name cannot be blank, Task not saved'}

Кроме того, в зависимости от того, как вы показываете свои ошибки, эта ошибка может фактически отображаться как "Имя имени не может быть..."; Если это так, вы хотите, чтобы сообщение было просто "не может быть пустым, задача не сохранена".