`
sean
  • 浏览: 16392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Gotchas in rails validation

阅读更多
假设我为了让用户输入的数据长度不超过数据库定义的长度,定义了如下validation:
ruby 代码
 
  1. class User < ActiveRecord::Base  
  2.   validates_length_of :name,  :maximum => 50  
  3. end  
上面代码的行为有时却颇为怪异:
ruby 代码
 
  1. ruby script/console  
  2.   
  3. >> u = User.new      
  4. =>  # 
  5. >> u.valid?      
  6. => false      
  7. >> u.errors.full_messages      
  8. =>["Name is too long (maximum is 50 characters)"]      


注意当user对象的name为nil时,输出的错误却是["name is too long (maximum is 50 characters)"],驴唇不对马嘴!但事实确实如此,为什么?原因在于rails的所有validation方法都支持一个可选参数:allow_nil。allow_nil默认为false, 所以当user对象的name属性为nil时,  尽管is nil与is too long是两回事,validates_length_of :name, :maximum => 50 这个验证却不会通过。

当然你可以指定:allow_nil => true, 但问题是有些属性不能为nil, 即是必须的属性,这时就会想到validates_presence_of,我们可以对上面的代码做改进:
ruby 代码
 
  1. class User < ActiveRecord::Base    
  2.   validates_length_of :name:maximum => 50,  :allow_nil => true  
  3.   validates_presence_of :name    
  4. end    
分享到:
评论

相关推荐

    Gotchas-in the Verilog and SystemVerilog Standards.zip

    Standard Gotchas-in the Verilog and SystemVerilog Standards That Every Engineer Should Know 。 The Verilog and SystemVerilog standards define hundreds of subtle rules on how software tools should ...

    C++ Gotchas Avoiding Common Problems in Coding and Design epub

    C++ Gotchas Avoiding Common Problems in Coding and Design 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    [CS]C++ Gotchas

    《C++ Gotchas》是一本专门探讨C++编程中容易犯错或不为人知的细节的书籍,旨在帮助程序员避免常见的编程陷阱。C++作为一门强大的编程语言,其丰富的特性和复杂的规则使得开发者在编写代码时很容易陷入各种“gotchas...

    verilog and systemverilog 101 gotchas

    在介绍《Verilog和SystemVerilog 101 Gotchas》这本书的详细知识点之前,首先要说明的是,这本书是由Stuart Sutherland撰写,他在Verilog及SystemVerilog标准的定义中扮演了重要的角色,同时也是IEEE官方Verilog和...

    C.Gotchas (C++ 图书)

    《C++ Gotchas》是一本专门探讨C++编程中容易犯错或不为人知的陷阱的书籍,旨在帮助程序员深入理解C++语言的微妙之处,避免在编程过程中遇到的潜在问题。这本书通常会涵盖一系列常见但又易于忽视的错误,这些错误...

    Thinking in C++ Accelerated C++ C++ Gotchas

    Thinking in C++ Accelerated C++ C++ Gotchas C++初学者50个忠告中提及的资料整理[分10卷下载 每卷50M]\C++初学者50个忠告中提及的资料整理[分10卷下载每卷50M].part01

    C++程序设计陷阱(C++Gotchas)

    C++程序设计陷阱(C++Gotchas)

    [AddisonWesley]C++_Gotchas.zip

    【标题】:“AddisonWesley”出版社的“C++ Gotchas”压缩包 这个压缩文件代表了由著名出版商AddisonWesley发行的一本关于C++编程常见陷阱和问题的资源。"Gotchas"在编程领域通常指的是那些容易被忽视、可能导致...

    C++程序设计陷阱(C++Gotchas) 中英两个版本

    《C++程序设计陷阱》是一本深入探讨C++编程中潜在问题的专业书籍,旨在帮助开发者避免常见的编程陷阱和误区。该书分为中英文两个版本,分别以PDF和CHM格式提供,为不同语言习惯的读者提供了便利。...

    C++ Gotchas .chm

    Addison Wesley - C++ Gotchas .chm 好书不用多说~~~

    STL Gotchas.pdf

    ### STL Gotchas - 避免在使用STL时常见的错误 #### 一、插入和删除可能使引用、指针和迭代器失效 - **背景**:STL容器是动态大小的,可以根据需要增长。它们提供了成员函数`insert()`和`erase()`来添加和移除元素...

    Addison.Wesley.Stephen.C.Dewhurst.C++.Gotchas-.Avoiding.Common.Problems.in.Coding.and.Design

    根据提供的文件信息,本书《C++ Gotchas: Avoiding Common Problems in Coding and Design》由Stephen C. Dewhurst撰写,出版商为Addison Wesley,出版日期为2002年11月29日,ISBN号为0-321-12518-5,全书共有352页...

    vc编程系列之Addison Wesley - C++ Gotchas

    《VC编程系列之Addison Wesley - C++ Gotchas》是一本深入探讨C++编程中常见陷阱和误区的专业书籍。在C++编程过程中,开发者往往容易遇到一些不易察觉的问题,这些问题可能导致程序行为不符合预期,甚至引发严重错误...

    r-gotchas:陷阱

    一些陷阱R函数有一些潜在的令人惊讶的结果,需要注意。 是一个包含更多内容的stackoverflow讨论。 甚至更多:以及更多:尺寸下降对于矩阵: m &lt;- matrix ( 1 : 6 , ncol = 3 )m ## [,1] [,2] [,3]## [1,] 1 3 5##...

    microsoft.net gotchas

    在.NET开发领域,Microsoft.NET Gotchas是一系列常见的陷阱和误区,开发者可能会遇到这些问题,从而导致程序的不稳定或者性能下降。本文将深入探讨这些.NET开发中的潜在问题,帮助开发者避免不必要的困扰。 1. **...

    Verilog and system verilog

    Verilog and system verilog学习的好资料, Verilog and SystemVerilog Gotchas_101 Common Coding Errors and How to Avoid Them

Global site tag (gtag.js) - Google Analytics