将数据库约束转换为Rails验证

时间:2013-07-24 16:06:03

标签: ruby-on-rails validation constraints rails-activerecord

在Rails应用程序中,直接从数据库推断列名,类型和默认值。有没有办法在初始化或尝试保存时从数据库约束推断验证?

这将允许更多的DRY,并确保在访问数据库并获得异常之前可以轻柔地验证所有数据,因为验证将涵盖所有数据库约束。数据库的约束是使用它们时数据无效性的权威信息来源。

或者,是否可以通过命中数据库约束使ActiveRecord救援,并且好像弱验证失败了?这意味着可以在不重新启动或编辑Rails应用程序的情况下在外部操纵数据库约束,性能将得到改善,因为唯一性验证不需要单独的查询,并且唯一性验证也不会受到竞争条件的影响。

1 个答案:

答案 0 :(得分:3)

您可以使用Enforce Schema Rules gem:

https://github.com/twinge/enforce_schema_rules

它根据您已在模式中创建的数据库规则验证模型。

示例:

class Person < ActiveRecord::Base
  enforce_schema_rules :except => :dhh
end