在一般的教程里面关于验证字符的方法都是用
写法 1
validates :name, presence:true
表示验证该字符是否为空 但是在 rails 的 api 中关于验证的写法是
写法 2
validates_presence_of :name
类似比如说验证长度等的写法也是类似两种写法,功能也类似。
问题如下: 一般情况下使用写法 1 好还是写法 2 好,我看基本上的代码中都使用写法 1 的格式,这个是老版本的写法么?这两种写法在功能上是否有差别?
没区别。我比较喜欢第一种写法,因为通常别的 validations 还需要别的项目,这样好几个 validates 就可以排列得好看一点。
#1 楼 @billy 最近看 api,第二种写法在 rails4.1 的 api 上能看的到,但是第一种写法在哪里能找到依据?是之前的版本的,我对 3.2 之前的版本不熟悉。
#2 楼 @runup 反了吧?第二种 api 是 rails 2.x 遗留下来的。3.0 就改成第一种了。
#3 楼 @yuan 但是 4.1 的 api 是第二种写法
@runup Rails 4 API 里面都有啊
第一种: http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates
第二种: http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_presence_of
#4 楼 @runup 那是 4.1 还留着它。
这是第一种 API: http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates
#5 楼 @billy 3ks 两种方式都可以~
#6 楼 @yuan 恩,一个问题有多种解决方式,认为还是第一种方法简洁些,谢谢前辈
1 是新写法
从 Rails 3 开始,都是推荐第一种写法的,不过少数遗留的代码和文档里包含第二种写法,也是可以运行的。
#9 楼 @swordray 3ks
#10 楼 @kgen 谢谢指导,最近看看 api