可以自定义validate(), 这个方法在每次保存数据时都会被调用.
如:
同时也可以自定义 validate_on_create(),validate_on_update()方法.
valid?()方法可以随时调用,用来测试数据是否能通过校验
返回的错误信息可用 error_messages_for(model)方法显示.
如:<%= error_messages_for 'article' %>
校验大全:
如:
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.” :on :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.” :on :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.” :on :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对象. :on :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.” :on :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.” :on :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.” :on :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取代确定的最大,最小或指定数据. :on :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.” :on :save,:create, or :update :only_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.” :on :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.” :on :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
发表评论
-
使用 Capistrano 对rails app进行快速部署
2011-02-23 15:05 1806仅转载了,还没有用过,如果有问题可留言,大家一起讨论 在进行 ... -
ruby进行web serveice的方法
2011-02-15 14:37 856require 'soap/wsdlDriver' #url ... -
友好的登录系统
2011-01-28 10:54 703友好的登录系统 按照目前的代码,如果管理员尝试在未登录的状态下 ... -
第三版
2011-01-27 15:36 0view格式化价格 <%= number_to_curr ... -
用户操作数据库记录
2011-01-25 15:16 881今天我们看看怎样在数据库记录用户操作 db/migrate/0 ... -
Ruby中 respond_to? 和 send 的用法
2011-01-25 14:24 1282obj = Object.new if obj ... -
rails 路由
2011-01-25 14:17 11814 正则路由 Rails支持 ... -
flash-notice自动消失
2011-01-25 11:12 1434flash 提示的自动消失: <body onloa ... -
密码加密和解密
2011-01-25 11:11 1230two way crypt: #http://crypt. ... -
开发环境页面直接调试
2011-01-25 11:06 694#首先,在layout里边的合适地方添加debug,并且使 ... -
对静态页面进行缓存
2011-01-24 14:35 958对于静态站点我们可以利用Rails的cache来管理,如在co ... -
rvm部署rails3和ruby192
2011-01-21 10:39 11111. Installing RVM $ sudo gem ... -
rails要理解
2011-01-18 10:57 637清单3 module Dictionary ... -
rails 加载不同插件设置
2010-12-31 14:49 406config.plugins = [ :all ] co ... -
参考rails 下拉
2010-12-31 14:47 668对于多数的model的select列表,我都会用model属性 ... -
自定义form提示
2010-12-31 10:53 722自定义form错误提示 application_contro ... -
提高rails开发模式下静态页加载速度
2010-12-31 10:44 892http://github.com/thedarkone/ra ... -
rails 连接多个数据库
2010-12-30 10:31 790首先在database.yml中加入以下代码,其中cg_clo ... -
瘦controller,富model
2010-12-28 14:02 758----先看这么一段rhtml代码:渲染模板中加入了这么多的逻 ... -
rake 命令一览
2010-12-28 11:21 1017rake db:abort_if_pending_migr ...
相关推荐
这个标题提到的"Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中"是一个具体的验证场景,常常在数据校验时会用到,比如确保用户输入的数据符合特定的范围或者限制。 自定义验证是ActiveModel的一个...
- 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器...
- **数据验证辅助方法**:列出常用的验证辅助方法,如`validates_presence_of`、`validates_uniqueness_of`等。 - **常用的验证选项**:介绍在验证规则中常用的选项,如`message`、`if`、`unless`等。 - **严格验证*...
`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用ERB(Embedded Ruby)或更现代的Haml、Slim等模板语言,结合HTML来渲染用户界面。图片的展示、上传...
Rails 2.1.0引入了许多新特性,例如活动记录(ActiveRecord)的自动保存关联、部分渲染以及自定义验证选项等。 7. **activerecord-2.1.0.gem**:ActiveRecord是Rails中的ORM(对象关系映射)库,负责将数据库表映射...
Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。...在实际操作中,参考Rails的官方文档和社区资源将是提升技能的好方法。
这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送自定义响应。下面将详细介绍这个中间件的工作原理、主要功能及其在实际应用中的使用方法。 1. **工作原理**: `weixin_...
4. **路由**:Rails的路由系统允许灵活地定义URL到控制器动作的映射,书中介绍了如何设置资源路由、命名路由和自定义路由规则。 5. **ActiveRecord**:详述了ActiveRecord是如何作为对象关系映射(ORM)层工作的,...
此外,`rails generate scaffold`命令也变得更加灵活,可以自定义模板。 4. Rails 4.0: Rails 4带来了大量的改变和优化。最显著的是加入了Strong Parameters,提高了安全性,避免了Mass Assignment漏洞。另外,它...
Rails框架中的日期控件是开发Web应用时常用的一种交互组件,它允许...以上就是Rails日期控件的相关知识点,通过合理利用Rails的辅助方法和自定义样式,可以创建功能强大且美观的日期输入组件,提升Web应用的用户体验。
2. **模型扩展**:在User模型中,你可以添加自定义方法或属性来扩展Devise的功能。比如,添加一个`is_admin?`方法来判断用户是否是管理员,或者定义一个`last_active`字段记录用户最后活跃的时间。 3. **路由配置**...
在API中,模型主要用于验证数据、定义关联关系和业务逻辑。 六、错误处理: API应该提供清晰的错误信息,以便客户端能够理解问题所在。可以通过rescue_from或自定义异常类来捕获和处理错误。 七、安全与认证: API...
通过阅读源代码,你可以了解如何设置资源路由、命名路由、自定义路由以及如何处理参数。 2. **ActiveRecord**:作为ORM(对象关系映射)层,ActiveRecord使得Ruby对象与数据库表之间的交互变得简单。源代码中的`app...
比如,你可能需要自定义验证规则、关联关系、或者视图中的样式和布局。理解生成的代码结构,能够帮助你更高效地进行定制。 **5. CRUD Generator 2的优缺点** 优点: - 快速生成基本的CRUD功能,节省开发时间。 - ...
在Rails中,ActiveRecord默认提供了多种验证方法,如`validates_length_of`、`validates_numericality_of`等,但这些方法对日期和时间的处理并不全面。`validates_timeliness` 插件则填补了这一空白,它支持以下功能...
这个库是基于Warden,一个通用的身份验证库,允许Devise在Rails应用中实现自定义的身份验证逻辑。 Devise的主要特点包括: 1. **模块化**:Devise通过一系列可插入的模块来实现不同的功能,如确认、密码重置、记住...
- **自定义查询**:可以在`paginate`方法内部嵌入更复杂的查询条件。 总之,`will_paginate`为Rails 2.0.2版本的分页需求提供了一个高效且易于使用的解决方案。尽管Rails 2.x已经很老,但这个插件依然在很多旧项目...
此外,Rails提供了丰富的插件和gem(Ruby gem),例如Devise用于身份验证,CanCanCan处理授权,Paperclip或Carrierwave用于文件上传等,这些都能极大地增强应用的功能。 在开发过程中,Rails还提供了TDD(测试驱动...
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...