ruby-on-rails - 如何理解 Ruby 类中冒号运算符的用法

标签 ruby-on-rails ruby

我正在学习 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/

相关文章:

ruby-on-rails - 如何从 Rails 应用程序中完全删除 Yarn?

ruby-on-rails - 在 Ruby 中发送 HTTP/2 POST 请求

ruby-on-rails - Mongoid pull_all 方法不起作用

sql - Rails - 加入后不同

ruby-on-rails - Rails 5+、WebPacker 和 Docker 开发工作流程

ruby-on-rails - 如何让序列化器不包含仅用于特定方法的关联表?

php - 何时使用 Ruby 与何时使用 PHP

ruby-on-rails - 在 Rails 中使用 will_paginate 和 AJAX 实时搜索以及 jQuery

ruby - Ruby 中是否存在 C#'s ` #region` 关键字之类的东西

css - sass --watch 在初始启动后不更新 (sass 3.1.16)