 |
2005-12-21
TAG:ROR rails 表单验证
今天做好了一个完整的对一个“部门”实体的增删改操作,很简单,却搞了我半个下午,其他的到好说,主要的时间就是放在这个验证上了。 本来的计划是验证操作放在最后再做,可是今天发现,验证也是分为两类的,一种是纯粹的表单验证,例如验证一个字段不能为空、验证某个框框必须为数字之类的。这些通常在对安全性要求不高的地方,只用JAVASCRIPT做就完全可以了。不过还有另外一种验证,使要涉及到数据库操作的,那就是需要操作数据库的数据级别的验证,这类验证的结果通常会依赖已经存在的数据,比如验证某字段必须是唯一。 原来在JAVA里的做法,通常这部分验证是要写在controller里面的,先进性数据库的查操作再确定是否新加的数据是合法数据,而在ROR里面,采取了更为优雅的做法,这类验证操作都是放在model里面做的,这就好像,model自己来保证自己是完全合法的。而且做法也非常简单: validates_uniqueness_of :name OK,这么一搞,这个model的name字段已经有了唯一性约束,如果违反了该约束,ROR的会返回前面提交表单的页面,如果你在里面使用了“error_messages_for()”函数,就能直接显示出错误信息(错误信息业是通过validates_uniqueness_of制定的)。在这里,ROR又用了一个约束换取了简单,就是出错后的操作,自动返回提交页面,其实通常情况下大家也都是如此做的。
|