我来自尽可能完整地定义数据库模式的背景,例如字段长度,非空,默认值,复杂的参照完整性等。使用 Rails,我必须在模型中完成所有这些才能获得智能验证。那么我是否也复制了数据库定义中的所有内容?
例如,如果电子邮件是必填字段,我是否添加 validates :email, :presence => true
到模型 AND :null => false
到迁移?
字符串呢?如果我有 :length => { :maximum => 50 }
在模型中,我也想要:limit => 50
在迁移中?
我是否向数据库添加外键以强制执行参照完整性?
或者是“Rails 方式”在模型中尽可能多地做,而将数据库作为“哑巴”持久化引擎?
最佳答案
明确添加:null => false。否则您的 DBA 可能会伤害您。您的 Rails 应用程序并不是唯一接触数据库的东西。
最大长度为您提供了一个增益 DB 内存。一定要设置最大长度,但一定要添加 rails 验证。如果不是,您可能会遇到奇怪的应用程序错误。
外键很好,但在 Rails 应用程序中使用较少
关于ruby-on-rails - 对于 Rails 应用程序,我应该在数据库和模型中进行验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774997/