Rails 验证字段是否为真(如果存在)

yel*_*ign 2 ruby-on-rails

我发现很多关于如何验证字段是否存在(如果另一个条件为真)的帖子,例如:

Rails:仅当值存在时如何验证格式?

Rails - 验证:如果一个条件为真

然而,我该如何反其道而行之呢?

我的用户有一个名为 的属性terms_of_service

我如何最好地编写一个验证来检查terms_of_service == true是否存在?

phi*_*ash 5

您正在寻找验收验证

您可以这样使用它:

class Person < ApplicationRecord
  validates :terms_of_service, acceptance: true
end
Run Code Online (Sandbox Code Playgroud)

或者有更多选项,如下所示:

class Person < ApplicationRecord
  validates :terms_of_service, acceptance: { message: 'must be abided' }
end
Run Code Online (Sandbox Code Playgroud)

[编辑]

您也可以将字段设置为单个项目或数组。因此,如果您将该字段存储在隐藏属性中,您可以检查它是否仍然“已接受”,无论您如何描述已接受:

class Person < ApplicationRecord
  validates :terms_of_service, acceptance: { accept: ['yes', 'TRUE'] }
end
Run Code Online (Sandbox Code Playgroud)