验证关联的布尔值True

时间:2015-08-13 16:35:18

标签: ruby-on-rails ruby-on-rails-3 activerecord associations

我的模型作业 belongs_to 型号设备

在创建Assignment行之前,我需要验证相应设备的布尔值是否设置为true,否则创建将失败。怎么办呢?

2 个答案:

答案 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。 默认情况下,它适用于createupdate

请查看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