如何向Rails模型添加错误?

Son*_*cco 18 ruby-on-rails

我试图before_save在rails模型中的方法中添加异常,但在视图中,不存在任何错误消息.

模型:

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
Run Code Online (Sandbox Code Playgroud)

视图:

<%= @model.errors.any? %>
Run Code Online (Sandbox Code Playgroud)

这总是错误的.

如何向模型添加错误消息?

编辑:

问题是,我在update_attribute函数之后进行了重定向,而不是再次呈现操作.谢谢你的帮助.

Chr*_*ald 25

您应该在验证时执行此操作,而不是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
Run Code Online (Sandbox Code Playgroud)