可以自定义validate(), 这个方法在每次保存数据时都会被调用.
如:
def validate
if name.blank? && email.blank?
errors.add_to_base("You mustspecify a name or an email address")
end
end
同时也可以自定义 validate_on_create(),validate_on_update()方法.
valid?()方法可以随时调用,用来测试数据是否能通过校验
返回的错误信息可用 error_messages_for(model)方法显示.
如:<%= error_messages_for 'article' %>
校验大全:
validates_acceptance_of
指定checkbox应该选中. (如:(*)我同意条款)
用法:validates_acceptance_of attr... [ options...]
参数:message text 默认:“mustbe accepted.”
n :save,:create, or :update
实例:
class Order < ActiveRecord::Base
validates_acceptance_of:terms,
:message=> "Please accept the terms to proceed"
end
validates_associated
查验指定的object.
用法:validates_associated name... [ options...]
参数:message text 默认: is “is invalid.”
n :save,:create, or :update
实例:
class Order < ActiveRecord::Base
has_many :line_items
belongs_to :user
validates_associated:line_items,
:message=> "are messed up"
validates_associated:user
end
validates_confirmation_of
数据重校
用法:validates_confirmation_of attr... [options... ]
参数:message text 默认 “doesn’t matchconfirmation.”
n :save,:create, or :update
实例:
对密码表:
<%= password_field "user", "password"%><br />
<%= password_field "user","password_confirmation" %><br />
#第二表名为xxxx_confirmation
class User < ActiveRecord::Base
validates_confirmation_of:password
end
validates_each
使用block检验一个或一个以上参数.
用法:validates_each attr... [ options... ] {|model, attr, value| ... }
参数:allow_nilboolean 设为true时跳过nil对象.
n :save,:create, or :update
实例:
class User < ActiveRecord::Base
validates_each :name, :email do|model, attr, value|
ifvalue =~ /groucho|harpo|chico/i
model.errors.add(attr,"Youcan't be serious, #{value}")
end
end
end
validates_exclusion_of
确定被检对象不包括指定数据
用法:validates_exclusion_of attr..., :in =>enum [ options... ]
#enum指一切可用include?()判断的范围.
参数:allow_nil 设为true将直接跳过nil对象.
:in (or:within) enumerable
:message text默认为: “is not included in the list.”
n :save,:create, or :update
实例:
class User < ActiveRecord::Base
validates_exclusion_of:genre,
:in=> %w{ polka twostep foxtrot },
:message=>"no wild music allowed"
validates_exclusion_of:age,
:in=> 13..19,
:message=>"cannot be a teenager"
end
validates_inclusion_of
确认对象包括在指定范围
用法:validates_inclusion_of attr..., :in =>enum [ options... ]
参数:allow_nil 设为true直接跳过nil对象
:in (or:within) enumerable An enumerable object.
:message text默认:“is not included in the list.”
n :save,:create, or :update
实例:
class User < ActiveRecord::Base
validates_inclusion_of:gender,
:in=> %w{ male female },
:message=>"should be 'male' or 'female'"
validates_inclusion_of:age,
:in=> 0..130,
:message=>"should be between 0 and 130"
end
validates_format_of
用正则检验对象
用法:validates_format_of attr..., :with =>regexp [ options... ]
参数:message text 默认为: “is invalid.”
n :save,:create, or :update
:with正则表达式
实例:
class User < ActiveRecord::Base
validates_format_of :length,:with => /^\d+(in|cm)/
end
validates_length_of
检查对象长度
用法:validates_length_of attr..., [ options...]
参数:in (or :within) range
:isinteger
:minimuminteger
:maximuminteger
:message text默认文字会根据参数变动,可使用%d取代确定的最大,最小或指定数据.
n :save,:create, or :update
:too_longtext 当使用了 :maximum后的 :message
:too_shorttext ( :minimum )
:wrong_length( :is)
实例:
class User < ActiveRecord::Base
validates_length_of :name,:maximum => 50
validates_length_of :password,:in => 6..20
validates_length_of :address,:minimum => 10,
:message=>"seems too short"
end
validates_numericality_of
检验对象是否为数值
用法:validates_numericality_of attr... [options... ]
参数:message text 默认 “is not a number.”
n :save,:create, or :update
nly_integer
实例:
class User < ActiveRecord::Base
validates_numericality_of:height_in_meters
validates_numericality_of :age,:only_integer => true
end
validates_presence_of
检验对象是否为空
用法:validates_presence_of attr... [ options...]
参数:message text 默认:“can’t be empty.”
n :save,:create, or :update
实例:
class User < ActiveRecord::Base
validates_presence_of :name,:address
end
validates_uniqueness_of
检验对象是否不重复
用法:validates_uniqueness_of attr... [ options...]
参数:message text 默认: “has already beentaken.”
n :save,:create, or :update
:scope attr指定范围
实例:
class User < ActiveRecord::Base
validates_uniqueness_of:name
end
class User < ActiveRecord::Base
validates_uniqueness_of :name,:scope =>"group_id"
end
#指定在同一group_id的条件下不重复.
常用正则:
E-Mail地址格式:
validates_format_of :email,
:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
:message => 'email must be valid'
网址格式:
validates_uri_existence_of :url, :with =>
/(^$)|(^(http|https)://[a-z0-9] ([-.]{1}[a-z0-9])*.[a-z]{2,5}(([0-9]{1,5})?/.*)?$)/ix
分享到:
相关推荐
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...
Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 ...
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
Ruby On Rails中文教材(PDF)
ruby on rails社区网站开发源码
Ruby on Rails Web开发学习实录 内容简介: 在目前的主流web开发技术中,基于ruby语言的rails框架是做网站开发速度最快的工具。它可以达到j2ee框架开发速度的5~10倍,并且代码量也非常少。另外由于代码量的大幅度...
ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作
本书的目标是成为对“如果想学习使用 Ruby on Rails 进行 Web 开发,我应该从哪儿开始?”这一问题的最好答案。学习完本书的内容之后,你将具备使用 Rails 进行开发和部署 Web 程序的技能。同时你还能够通过一些进阶...
Ruby On Rails 官方教程,这本书讲解如何使用 Ruby on Rails 框架开发应用,以及如何把应用部署到生成环境。本书使用 Rails 默认的开发工具栈开发了一个完整的社交应用(类似 Twitter)。读完本书后你将掌握如何使用...
ruby on rails 教程源码,配合原书使用
ruby on rails最新版 这是本人精心收集的重要软件
本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。
ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)
Ruby on Rails中文指南
该资源包包括在Linux安装Ruby on Rails所需的包,以及安装步骤文档
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
ruby on rails api方便查阅
最新Ruby on Rails中文版介绍,欢迎大家共同学习此最新的技术!随着Ruby和Rails版本的不断升级,这些知识也在不断的更新,谢谢的支持!
基于ruby on rails开发示例源码