验证关联的布尔值 True

Validate Boolean True of an Association

我有一个模型 Assignment 其中 belongs_to 模型 Device

在创建分配行之前,我需要验证相应设备的布尔值是否设置为真,否则创建会失败。如何做到这一点?

class Assignment < ...

validate :check_device_boolean_value

def check_device_boolean_value
  errors.add(:your_boolean_value, "must to boolean") unless devise.your_boolean_value
end

您可以使用 Rails custom validation 根据设备的 boolean_attribute.

验证您的 Assignment 模型

在您的 Assignment 模型中,添加此自定义验证器:

validate :true_device_attribute

然后,在同一个模型中定义验证器方法:

 def true_device_attribute
    unless device.boolean_attribute
      errors.add(:boolean_attribute, "Device's boolean_attribute Must be True")
    end
 end

默认情况下,每次您调用 valid?.

时都会进行此类验证 运行

您还可以控制何时 运行 您的自定义验证器。如果您只想在 creatingassignment 时执行验证,那么您可以将 :on :create 选项传递给 validate 方法,如下所示:

validate :true_device_attribute, on: :create

然后验证将仅在您尝试 create Assignment 记录时 运行。不适用于 update。 默认情况下,它适用于 createupdate

查看 Rails Official Documentation for Validations Custom Methods 以获得更多见解。