新手问题 validates :title, presence: true 中的 presence 是方法吗?

huangpuxiang · October 27, 2017 · Last by torvaldsdb replied at October 30, 2017 · 1661 hits

因为在 rails guides 文档中提到,数据验证辅助方法有很多: acceptance\ validates_associated\ confirmation\ exclusion 等等 但是这些方法的书写形式 validates :title, presence: true 是像这样的,其中 presence 像是散列的:key,而 true 相当于 value, 所以有疑问这些辅助的验证方法:是方法还是:key?

key,我当初刚学 ror 的时候也冒出过这种疑惑。

Reply to robotsir

所以呢?

所以我觉得这个问题提的好。不过更好的方式是直接点方法名跳进源码。扫一眼就清楚了。

Reply to robotsir

validates(*attributes) public 和 validates_acceptance_of,只找到这两种形式的 API,acceptance\ validates_associated\ confirmation\ exclusion 这些似乎是属性,对于源码说实话看不懂。

又一个没学 ruby 就学 ror 的。。。。。。

当初我以为 validates 是关键字。。。

Reply to pynix

自学 ruby program 但还是不懂,比如 validate 这个方法:methods 这个参数相当于数组,如果 block 存在,就将 block 添加到数组末尾,但 write_inheritable_set 不是很懂,而且它的参数怎么又是:validate 这个方法

我也看不懂。。。。

Reply to pynix

不要调侃我了,求指导?

初学看 API 就行了。。。。不必过于较真。

比如看 validates 怎么用,而不是 validate 干什么。。。。

Reply to pynix

同意,先知道如何用,再了解 why

http://railsbook.tw/chapters/07-ruby-basic-3.html

也許這篇勉強算得上跟你這問題有點關係,供你參考 :)

花點時間了解 Ruby 是怎麼回事,對 Rails 學習是滿有幫助的喔

validates 是方法,后面的都是参数

Reply to pynix

你好有意思。啊哈,没有看源码,validates(:name, :email, { presence: true }), 我需要去测试一下。

You need to Sign in before reply, if you don't have an account, please Sign up first.