Как добавить ошибки в модель 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