【问题标题】:Convert database constraints to Rails validations将数据库约束转换为 Rails 验证
【发布时间】:2013-07-24 05:48:19
【问题描述】:

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

这将允许更多的 DRYness,并确保所有数据都可以在到达数据库并获得异常之前进行软验证,因为验证将涵盖所有数据库约束。数据库的约束是使用时数据无效的权威信息来源。

或者,是否有可能使ActiveRecord 救援免受数据库约束,并表现得好像弱验证失败?这意味着无需重新启动或编辑 Rails 应用程序即可在外部操作数据库约束,性能将得到提高,因为唯一性验证不需要单独的查询,并且唯一性验证将不受竞争条件的影响。

【问题讨论】:

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


    【解决方案1】:

    您可以使用 Enforce Schema Rules gem:

    https://github.com/twinge/enforce_schema_rules

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

    例子:

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

    【讨论】:

    • 好答案!还没有尝试过,但 gem 看起来非常简单、有效且源代码很轻,将 schema.rb 转换为验证,但不检查数据库。不太适合我的用例,与不断更改架构的人共享数据库,但将来肯定会使用。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2013-05-21
    • 2020-01-06
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多