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

huangpuxiang · 2017年10月27日 · 最后由 torvaldsdb 回复于 2017年10月30日 · 1659 次阅读

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

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

robotsir 回复

所以呢?

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

robotsir 回复

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

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

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

pynix 回复

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

huangpuxiang 回复

我也看不懂。。。。

pynix 回复

不要调侃我了,求指导?

huangpuxiang 回复

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

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

pynix 回复

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

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

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

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

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

pynix 回复

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号