首页 > 解决方案 > Rails 中的验证

问题描述

我设计了一个非常简单的 Web 应用程序,它将作者、书籍和评级联系起来。

在每个相应的模型中

Author
has_many :books

Book
belongs_to :author
has_many :reviews

Review
belongs_to :book

模型属性

Author : title, fname, lname, DOB
Book : ISBN,  title, publish_date, pages
Review : rating(1-5), description

我想知道我是否在模型中完全验证了我喜欢的所有这些属性,例如 1 个属性

validates :ISBN, :only_integer => true, length: { is: 13 }

我需要担心其他地方的数据验证吗?

我知道模型的验证在服务器端运行,因此可能需要在客户端(在 JS 中)进行一些验证。我试图确保在断言数据正确性方面没有缺陷。

标签: ruby-on-railsruby

解决方案


我需要担心其他地方的数据验证吗?

是的你是。

应用程序级验证仍然容易出现竞争条件

由 Thoughtbot 提供

对于应该是唯一的事物,例如 ISBN 编号,如果要保证唯一性,数据库约束是至关重要的。这可能导致问题的其他领域是当您对关联的计数有限制时。

虽然验证可以防止大多数错误,但它们不能替代数据库约束以确保数据的正确性。如果正确性很重要,则两者都是必需的。


推荐阅读