ruby-on-rails - 对于 Rails 应用程序,我应该在数据库和模型中进行验证吗?

标签 ruby-on-rails validation

我来自尽可能完整地定义数据库模式的背景,例如字段长度,非空,默认值,复杂的参照完整性等。使用 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/

相关文章:

ruby-on-rails - 我可以在RoR的 View 中使用redirect_to吗?

ruby-on-rails - 如何有条件地为 ActiveAdmin `table_for` 数组集合呈现列

ruby-on-rails - 在 Rails 中使用没有相应模型的 fixture

javascript - 使用 javascript 验证相互依赖的输入

mongodb - MongoDB 中的验证器不起作用

ruby-on-rails - 如何使用 Ruby on Rails 查找列中最长的字符串?

ruby-on-rails - Rails 不加载 application.html.erb,而是加载 View stub

validation - JSF 2.2 Tomcat 8,Bean 验证

java - 这是分散模式层次结构验证的唯一解决方法吗?

validation - 如何显示JSF成功消息