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