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

use*_*559 5 validation ruby-on-rails constraints rails-activerecord

在Rails应用程序中,直接从数据库推断列名,类型和默认值.是否有任何方法可以在初始化或尝试保存时根据数据库约束推断验证?

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

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

Hop*_*eam 3

您可以使用强制架构规则 gem:

\n\n

https://github.com/twinge/enforce_schema_rules

\n\n

它根据您已在架构中创建的数据库规则\xe2\x80\x99 验证您的模型。

\n\n

例子:

\n\n
class Person < ActiveRecord::Base\n  enforce_schema_rules :except => :dhh\nend\n
Run Code Online (Sandbox Code Playgroud)\n