25

我尝试在 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? %>

这总是错误的。

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

编辑:

问题是,我在 update_attribute 函数之后进行了重定向,而不是再次渲染动作。谢谢帮助。

4

1 回答 1

41

您应该在验证时执行此操作,而不是在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
于 2013-07-01T19:00:12.333 回答