【问题标题】:Validate Boolean True of an Association验证关联的布尔真值
【发布时间】:2015-08-13 16:35:17
【问题描述】:

我有一个 Assignment 模型 belongs_to 模型 Device

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

【问题讨论】:

  • 你能试试我的答案吗?它应该工作。如果没有,请告诉我。我会更新答案。

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


【解决方案1】:

您可以使用Rails custom validation 根据设备的boolean_attribute 验证您的Assignment 模型。

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

validate :true_device_attribute

然后,在同一个Model中定义validator方法:

 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

那么验证只会在您尝试createAssignment 记录时运行。不适用于update。 默认情况下,它适用于createupdate

查看Rails Official Documentation for Validations Custom Methods 了解更多信息。

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 2016-01-06
      • 1970-01-01
      • 2014-01-06
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2016-04-24
      相关资源
      最近更新 更多