不要让你的Rails Validate吓着了用户
来源:互联网 发布:dom编程艺术 编辑:程序博客网 时间:2024/05/16 11:13
ActiveRecord validations 是Rails很方便的一项特性,由于它如此好用,我们经常使用它,让用户看着了不舒服的信息,比如下面所说的例子:
举个例子,比如现在我要在用户注册的时候验证 Social Security Number (SSN) ,一般代码会是这个样子的:
- class User < ActiveRecord::Base
- validates_presence_of :ssn
- validates_length_of :ssn, :is => 9
- validates_numericality_of :ssn
- validates_uniqueness_of :ssn
- validates_as_ssn :ssn # Checks if a reserved or special SSN was sent
- end
根据以上的配置,如果用户忘记填入SSN,那个页面上会显示4个错误提示信息:
- SSN can’t be blank
- SSN is the wrong length (should be 9 characters)
- SSN is not a number
- SSN is invalid
问题是,用户只是没有填入SSN,我们应该只显示一条不为空的信息啊,为什么要将其它的不相关的信息也显示出来吓着了用户呢?
解决这个问题的方法很简单,我们可以使用 :allow_blank 选项,因此那其它的验证在SSN号为空的时候是不空触发的:
- class User < ActiveRecord::Base
- validates_presence_of :ssn
- validates_length_of :ssn, :is => 11, :allow_blank => true
- validates_numericality_of :ssn, :allow_blank => true
- validates_uniqueness_of :ssn, :allow_blank => true
- validates_as_cpf :ssn, :allow_blank => true
- end
还可以使用Rails框架给Object添加的Object#with_options这个方法:
- class User < ActiveRecord::Base
- validates_presence_of :ssn
- with_options :allow_blank => true do |v|
- v.validates_length_of :ssn, :is => 11
- v.validates_numericality_of :ssn
- v.validates_uniqueness_of :ssn
- v.validates_as_cpf :ssn
- end
- end
这以上举的只是一个例子,还有如 validates_confirmation_of :password ,只有在确认密码不为空的时候才验证confirmation
0 0
- 不要让你的Rails Validate吓着了用户
- 不要让你的Rails Validate吓着了用户
- 不要让搜索引擎代替了你的大脑
- 不要让工具阻了你前进的路。。。
- 不要让“知识”限制了你的思维
- 【将金令】:投资,不要让困惑侵蚀了你的意志
- 不要让“知识”限制了你的思维
- 不要让情绪,战胜了你的理智
- 不要让懒惰害了你
- IT痴汉的工作现状35-不要让你擅长的技术限制了你
- 不要让个性化广告吓坏用户
- 不要让你的程序死掉
- 不要让人偷走你的梦想
- 不要让别人影响到你的心情
- 不要让阳光打乱你的视线
- 不要让人偷走你的梦想
- 不要让SQLServer自动转换害了你!
- 不要让困难成为你阻碍你学习的借口
- 如何 修改RAILS的默认错误提示 和 Rails validation error message 相关的合集
- 图片滑动加多点触控技术放大缩小图片
- apktool使用教程
- IE下的cursor的url不兼容
- 素数问题
- 不要让你的Rails Validate吓着了用户
- async 将异步解套,并传递参数给下一个函数
- LeetCode数据库题解&&sql相关知识总结
- rails常用验证方法
- 操作系统(十)——设备管理
- 浅谈Android平台物理内存读写漏洞
- thinkphp+ajax+jquery异步实现加载更多
- 阻止Spy++之类的工具捕捉软件窗口
- 杭州电子科技大学ACM-1001