我的模型作业 belongs_to 型号设备
在创建Assignment行之前,我需要验证相应设备的布尔值是否设置为true,否则创建将失败。怎么办呢?
答案 0 :(得分:1)
您可以使用Rails custom validation根据设备的Assignment
验证您的boolean_attribute
模型。
在您的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?
时都会运行此类验证。
您还可以控制何时运行自定义验证器。如果您只想在creating
assignment
期间执行验证,那么您可以将:on :create
选项传递给validate
方法,如下所示:
validate :true_device_attribute, on: :create
然后验证将仅在您尝试create
Assignment
条记录时运行。不适用于update
。
默认情况下,它适用于create
和update
。
请查看Rails Official Documentation for Validations Custom Methods以获取更多见解。
答案 1 :(得分:0)
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