如何向Rails模型添加错误?

时间:2013-07-01 18:29:28

标签: ruby-on-rails

我尝试在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函数之后进行了重定向,而不是再次呈现操作。求助。

1 个答案:

答案 0 :(得分:24)

您应该在验证时执行此操作,而不是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