ruby-on-rails - 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 中)进行一些验证。我试图确保在断言数据正确性方面没有缺陷。
解决方案
我需要担心其他地方的数据验证吗?
是的你是。
应用程序级验证仍然容易出现竞争条件。
对于应该是唯一的事物,例如 ISBN 编号,如果要保证唯一性,数据库约束是至关重要的。这可能导致问题的其他领域是当您对关联的计数有限制时。
虽然验证可以防止大多数错误,但它们不能替代数据库约束以确保数据的正确性。如果正确性很重要,则两者都是必需的。
推荐阅读
- user-interface - 新的 Firefox 更新菜单书签填充间距修复?
- r - if (is.na(n) || n > 65536L) stop("size 不能为 NA 也不能超过 65536") 中的错误:缺少 TRUE/FALSE 需要的值
- r - 计算两列之间的差异时出错
- python - KNN 在 r2 上缺少一致性
- xaml - 将 XAML 转换为 PDF 并为 Xamarin.Forms UWP 项目分页
- wordpress - 使用 XAMP 安装问题
- android - Android Kotlin - Volley:发送文件以及包含表情符号的文本
- java - 如何将 textView 放置在 recyclerView 上方?
- image-processing - 如何使用拉格朗日插值对图像进行上采样
- typescript - 使用 typescript 配置 vscode 启动配置以在云运行模拟器上进行调试