我在我的表格迁移中有这个
t.string :name, :null => false
当用户尝试使用空名称保存模型时,它会出错。我怎么能处理它并回馈美丽的信息?我不想使用验证
validates :name, presence: true
答案 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