`
tiny.strimp
  • 浏览: 30218 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Agile Web Development with Rails 3nd Edition学习笔记-为数据增加校验处理

阅读更多
  数据的校验是在model中进行的。所有的model类都从ActiveRecord::Base继承。该基类已经为我们完成了很多的工作,如数据库映射、创建、更新和查询等。
  下面我们来说一些常用校验处理的实现方法。这些校验都是通过在product.rb文件的Product类中添加代码来实现的。

  1. 校验数据是否为空:
    我们可以通过在Product类开始部分添加如下代码来验证title、description和image_url是否为空:
   
validates_presence_of :title, :description, :image_url

    添加了这些代码之后,我们点“New product”链接进入新建页面,在title、description和image url栏中什么都不填,点“create”按钮提交数据,这时,我们会看到页面的顶端会显示如下信息:
   
引用
5 errors prohibited this product from being saved
There were problems with the following fields:
  Image url can't be blank
  Title can't be blank
  Description can't be blank


  2. 校验数据是否是数字:
    而对于数字类型的数据来说,则可以添加如下代码来验证是否是数字:
   
validates_numericality_of :price

    添加了这些代码之后,如果price栏中填写非数字数据之后,点“create”按钮提交数据,这时,我们会看到页面的顶端会显示如下信息:
   
引用
1 errors prohibited this product from being saved
There were problems with the following fields:
  Price is not a number


  3. 校验数据的唯一性:
    如果要检查某个字段的值的唯一性,如title,我们可以在Product类开始部分添加如下代码:
   
validates_uniqueness_of :title

    这样,在追加一个已经存在的title时,会看到这样的错误信息:
   
引用
Title has already been taken


  4. 校验数据范围:
    对于像price这样的价格数据,在填写的时候,我们希望该值必须是一个大于0.01的值时,我们需要添加一个保护类型的方法来进行处理。并且,这个方法需要注册给基类的validate方法来调用。
    首先,我们注册一个叫price_must_be_at_least_a_cent的方法给基类的validate,在Product类开始部分添加如下代码:
   
validate :price_must_be_at_least_a_cent

    接着,我们定义该方法:
   
protected
  def price_must_be_at_least_a_cent
    errors.add(:price, 'should be at least 0.01') if price.nil? ||
      price < 0.01
  end

    保存之后,我们再提交前面那个什么都没填的信息时,会看到如下的信息:
   
引用
5 errors prohibited this product from being saved
There were problems with the following fields:
  Price is not a number
  Price should be at least 0.01
  Image url can't be blank
  Title can't be blank
  Description can't be blank


  5. 校验数据格式:
    对于像image这样的字段,如果我们要检查它的文件格式,则可以添加如下代码:
   
validates_format_of :image_url,
                      :with     => %r{\.(gif|jpg|png)$}i,
                      :message  => 'must be a URL for GIF, JPG ' +
                                   'or PNG image.'

    这样,我们可以看到当我们添加一个不符合我们指定的格式的Image文件链接时,我们指定的错误信息将会被显示:
   
引用
Image url must be a URL for GIF, JPG or PNG image.


  6. 校验数据的长度:
    如果要校验数据的长度,可以使用“validates_length_of”。我们以title为例,如果我们希望每个产品的title长度不超过32个字符,我们可以使用如下的代码:
   
validates_length_of :title :maximum => 32

    如果希望至少有5个字符,则可以使用如下代码:
   
validates_length_of :title :minimum => 5

    那么,如果希望是大于等于5个字符,又同时小于等于32个字符呢?那就这样写:
   
validates_length_of :title :in => 5..32


  上面给出了一些常用的数据校验的方法。一般来说Rails提供了默认的错误信息。但是如果我们希望使用我们自己定义的错误信息的话,可以简单的在代码中加入“:message”来完成这个需求。以长度校验为例,我们可以这样指定我们的错误信息:
 
validates_length_of :title :maximun => 32
                    :message => "seems too long"

 
  其它更多的校验方法参见《Agile Web Development with Rails 3nd Edition》第399开始的“Validation Helpers”部分。
分享到:
评论

相关推荐

    Agile Web Development with Rails, 2nd Edition

    Agile Web Development with Rails, 2nd Edition &lt;br&gt;有两份PDF文件,大小分别是7.39MB和6.55MB &lt;br&gt;作者: Dave Thomas , David Heinemeier Hansson , Leon Breedt , Mike Clark , James Duncan Davidson ,...

    Agile Web Development with Rails 3nd Edition Beta.pdf

    ### 敏捷Web开发与Rails 3:关键知识点解析 #### 一、Rails版本与兼容性 本书《敏捷Web开发与Rails》第三版是基于Rails 2编写的。截至本书印刷时,当前可用的Rails Gem版本为2.1。书中所包含的所有代码均已在该...

    Agile Web Development with Rails 3nd Edition Beta

    文件列表中的《Agile Web Development with Rails 3nd Edition Beta.pdf》很可能是这本书的电子版,读者可以通过阅读此PDF文件获取完整的学习资料,包括详细的章节讲解、示例代码和练习题,以便在实践中不断巩固和...

    Agile+Web+Development+with+Rails中文版.pdf

    《Agile Web Development with Rails》是一本经典的Rails开发指南,中文版的出版使得更多的中国开发者能够深入理解并应用敏捷开发方法与Ruby on Rails框架。这本书是Rails开发者的必备参考资料,它详细介绍了如何...

    Agile Web Development with Rails 4

    Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details., Tens of thousands of ...

    Agile Web Development with Rails 3nd Edition .pdf

    Rails敏捷开发第三版,很不错的rails入门书,对初学rails的人很有用

    Agile Web Development with Rails-Second Edition-Beta一书例子

    总之,"depot"压缩包为学习者提供了一个宝贵的实践平台,通过实际操作,学习者可以更好地理解《Agile Web Development with Rails-Second Edition-Beta》中介绍的理论和技巧,从而提升自己的Rails开发技能。

    Agile Web Development with Rails,Fourth Edition 第四版

    《敏捷Web开发与Rails》第四版是一本专为软件开发者设计的权威指南,全面涵盖了使用Ruby on Rails框架进行敏捷Web应用开发的知识。Rails 3是该版本的重点,它引入了许多新特性和改进,使得开发过程更为高效且灵活。...

    Agile Web Development with Rails

    书中的"Pragmatic.Bookshelf.Agile.Web.Development.with.Rails.2nd.Edition.Dec.2006.eBook-BBL"可能是该书籍的电子版文件,它包含了全书的章节和内容。读者可以通过这个电子版深入学习Rails开发的各种技巧和最佳...

    Agile Web Development with Rails 4th edition(敏捷Web开发与Rails:程序指南 第四版)

    《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...

    Agile Web Development with Rails 1-14节_ppt(老师发的修正版)

    Agile Web Development with Rails 1-14节_ppt(老师发的修正版)

    Agile Web Development with Rails 2nd Edition源码

    《敏捷Web开发与Rails 2nd Edition》源码解析 在Web开发领域,Rails框架以其高效、灵活和生产力提升的特点,成为了许多开发者首选的工具。《敏捷Web开发与Rails 2nd Edition》这本书深入浅出地介绍了如何使用Ruby ...

    Agile Web Development with Rails, Third Edition 2009 (PDF + 代码)

    Agile Web Development with Rails, Third Edition by Sam Ruby, Dave Thomas, David Heinemeier Hansson Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including...

    Agile Web Development with Rails (PDF)

    《敏捷Web开发与Rails》是一本深度探讨如何利用Ruby on Rails框架进行敏捷Web开发的指导书籍,由Dave Thomas、David Heinemeier Hansson等多位在Rails社区有着深厚贡献的作者共同编写。本书不仅覆盖了Rails的基本...

Global site tag (gtag.js) - Google Analytics