我正在学习Rails,在浏览官方的guides时,我遇到了一些我无法真正理解其含义的代码。
案例1-

class Person < ApplicationRecord
  validates :name, presence: true
end

在我看来,validates是一个以名为:name的符号作为参数的方法但是,什么是presence这也是一种方法吗但如果是的话,那么:之后的presence有什么意义呢?我知道true的值是为presence设置的,这是一种验证,需要存在(换句话说)但我对语法不太清楚。
也可能presence: true只是一个散列,其中:presence(符号)是键,true是值。
案例2-
class Person < ApplicationRecord
  validates :terms_of_service, acceptance: true, message: 'must be abided'
end

同样,validates是将符号:terms_of_service作为参数的方法但剩下的呢?它是一个包含两个键值对的散列,有点像{acceptance: true, message: 'must be abided'}
如果它确实是一个散列,为什么在每种情况下都要附加到validates方法上?为什么不能
validates :terms_of_service
acceptance: true, message: 'must be abided'

谢谢你的帮助!

最佳答案

这是向方法传递散列的语法这和validates(:terms_of_service, {acceptance: true, message: 'must be abided'})是一回事这是向方法传递额外选项的常见方法。

关于ruby-on-rails - 在Rails中澄清Ruby语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40700203/

10-13 09:40