📜  rails 验证是否存在 - Ruby (1)

📅  最后修改于: 2023-12-03 15:04:47.375000             🧑  作者: Mango

Rails 验证是否存在

在 Rails 中,我们经常需要验证模型是否满足一些条件。其中一个常见的情况是验证模型的某些属性是否存在。在这篇文章中,我们将介绍如何使用 Rails 的内置验证方法来验证模型是否存在。

验证是否存在

在 Rails 中,我们可以使用 presence 验证方法来验证模型的某个属性是否存在。例如,如果我们有一个 User 模型,我们可以验证其 name 属性是否存在:

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

这个验证会确保每个 User 都有一个 name 属性,且值不为空。如果保存到数据库的记录没有包含 namevalidates 方法就会返回 false,并将错误信息添加到 errors 集合中。

检查验证是否通过

在执行验证之后,我们需要检查验证是否通过。我们可以使用 valid? 方法来检查当前模型是否通过验证:

user = User.new(name: '')
user.valid? # => false

因为我们的 name 属性为空,我们的验证将返回 false

我们也可以使用 invalid? 方法来检查当前模型是否未通过验证:

user = User.new(name: '')
user.invalid? # => true

在这个例子中,invalid? 方法将返回 true,因为没有通过验证。

如果您需要显示所有验证失败的错误消息,可以使用 errors 集合:

user = User.new(name: '')
user.valid?
user.errors.full_messages # => ["Name can't be blank"]

这将输出所有验证失败的错误消息。

自定义错误消息

在使用内置验证方法时,我们可以传递一个哈希表,以指定要添加到 errors 集合中的自定义错误消息。例如:

class User < ApplicationRecord
  validates :name, presence: { message: "Please enter your name" }
end

当您的验证失败时,错误消息将是 "Please enter your name",而不是 "Name can't be blank"。

结论

使用 Rails 的内置验证方法,我们可以轻松地验证模型的属性是否满足我们的条件。在这篇文章中,我们介绍了如何使用 presence 验证方法来验证模型的属性是否存在,并可以自定义错误消息。我们还演示了如何检查验证是否通过,以及如何访问错误消息。