我正在学习 Ruby (2.3.x) 和 Rails (4.x)。我正在浏览 Ruby On Rails Tutorial我遇到了这种语法并且无法阅读它:
class User < ApplicationRecord
validates :name, presence: true
validates :email, presence: true
end
这个类是否将 validates
定义为一个接受 :name
符号和散列 presence:true
的方法?第 3 行也是如此。
还是完全不同?所有运行它的尝试都会导致:
uninitialized constant ApplicationRecord.
我查看了 source(maybe?)但还是不清楚。
最佳答案
这是ApplicationRecord引入的一种特殊的DSL。您实际上在做的是在声明期间在类内部调用这些方法。它将这些验证添加到您的类中,因此无论何时您尝试保存记录,如果您没有电子邮件或姓名,它都会失败
试试这个
user = User.new
user.save
user.valid? # false
并尝试在没有验证
的情况下做同样的事情。
如果这会让你更清楚,你可以尝试这样写这个类
class User < ApplicationRecord
validates(:name, presence: true)
validates(:email, presence: true)
end
关于ruby-on-rails - 如何理解 Ruby 类中冒号运算符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910537/