如何处理Rails中的数据库错误?

时间:2015-01-30 08:30:27

标签: ruby-on-rails database model

我在我的表格迁移中有这个

t.string :name, :null => false

当用户尝试使用空名称保存模型时,它会出错。我怎么能处理它并回馈美丽的信息?我不想使用验证

validates :name, presence: true

1 个答案:

答案 0 :(得分:2)

您可以尝试迁移验证程序项目(https://github.com/vprokopchuk256/mv-core)。它允许您在数据库级别定义验证。

示例:

def change
  create_table :items do |t|
    t.string :name, presence: true
  end
end

您可以定义事件美丽的消息:

def change
  create_table :items do |t|
    t.string :name, presence: {message: 'not beautiful', as: :trigger}
  end
end

在这种情况下,验证将被定义为触发器内的条件。您可以定义该触发器名称或触发器事件。只需看看项目的文档。如果验证失败,则会显示带有指定消息的数据库异常。

如果你想慷慨地处理来自该约束的错误,你可以这样做:

class Item < ActiveRecord::Base
  enforce_migration_validations
end

结果:

Item.new(name: nil).valid?
=> false

Item.new(name: 'Mr. Smith').valid?
=> true