我发现有很多关于如何验证某个字段的帖子,如果其他条件为真,例如:
Rails: How to validate format only if value is present?
Rails - Validation :if one condition is true
但是,我该怎么做呢?
我的用户有一个名为terms_of_service
的属性。
如何最好地编写检查terms_of_service == true
的验证,如果存在?
答案 0 :(得分:2)
您正在寻找acceptance validation。
您可以像这样使用它:
class Person < ApplicationRecord
validates :terms_of_service, acceptance: true
end
或其他选项,如下:
class Person < ApplicationRecord
validates :terms_of_service, acceptance: { message: 'must be abided' }
end
<强> [编辑] 强>
您可以将字段所需的选项设置为单个项目或数组。因此,如果您将字段存储在隐藏属性中,则可以检查它是否仍然被接受&#34;但是你描述了接受:
class Person < ApplicationRecord
validates :terms_of_service, acceptance: { accept: ['yes', 'TRUE'] }
end
答案 1 :(得分:1)
我无法想到任何可以达到您目的的默认验证方法,但您可以使用自定义验证。此外,布尔值可以是truthy或falsy ,因此您只需检查其是否为真。这样的事情应该有效。
validate :terms_of_service_value
def terms_of_service_value
if terms_of_service != true
errors.add(:terms_of_service, "Should be selected/True")
end
end