Как добавить ошибки в модель Rails?
Я попытался добавить исключение в метод before_save
в модели рельсов, но в представлении не существует сообщения об ошибке.
Модель:
before_save do
doing_some_stuff
begin
File.open('some_file', 'w+') do |file|
if file.write(file_content)
return true
else
return false
end
end
rescue => e
self.errors.add(:base, e.message)
return false
end
Вид:
<%= @model.errors.any? %>
Это всегда неверно.
Как добавить сообщения об ошибках в модель?
EDIT:
Проблема заключалась в том, что я перенаправил после функции update_attribute вместо повторного действия. спасибо для справки.
Ответы
Ответ 1
Вы должны выполнять это при проверке, а не на before_save
. Когда вы перейдете к обратному сообщению before_save
, считается, что запись действительна.
validate do
doing_some_stuff
begin
File.open(some_file, 'w+') do |file|
if !file.write(file_content)
self.errors.add(:base, "Unable to write #{some_file}")
end
end
rescue => e
self.errors.add(:base, e.message)
end
end