Я обновляю несколько записей в рельсах, используя синтаксис ниже

@user = Model.update(params[:user].keys,params[:user].values)

Записи успешно обновлены. Но если есть какая-либо ошибка проверки , я не могу ее увидеть через @user.errors.

Я получаю сообщение об ошибке NoMethodError (undefined method errors' for #<Array:0x6dff140>):

Как я могу отобразить сообщение об ошибке, если какая-либо запись не сохранена из-за ошибок при редактировании нескольких записей?

Благодарность,

0
Sanjay Salunkhe 22 Апр 2016 в 12:01

2 ответа

Лучший ответ

Любые сообщения об ошибках, которые генерируются в процессе проверки, доступны из каждого экземпляра модели. Когда вы запускаете метод обновления в своем примере, он возвращает переменной @user массив экземпляров модели, которые были обновлены. Следовательно, вы можете исследовать экземпляры модели «внутри» массива, чтобы проверить, есть ли в нем ошибки, а не сам массив, что вы делаете в настоящее время.

1
hypern 22 Апр 2016 в 10:52
@users = Model.update(params[:user].keys,params[:user].values)
@errors = @users.map(&:errors).select(&:present?)
-2
Artem Biserov 22 Апр 2016 в 09:17