如何处理 Rails 中的数据库错误?
How to handle database errors in Rails?
我在 table
的迁移中有这个
t.string :name, :null => false
当用户尝试使用空名称保存模型时,会出现错误。我该如何处理它并回馈美丽的信息?我不想使用验证
validates :name, presence: true
您可以尝试 Migrations Validators 项目 (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
我在 table
的迁移中有这个t.string :name, :null => false
当用户尝试使用空名称保存模型时,会出现错误。我该如何处理它并回馈美丽的信息?我不想使用验证
validates :name, presence: true
您可以尝试 Migrations Validators 项目 (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