Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证自定义消息?_Ruby On Rails_Ruby_Validates Associated - Fatal编程技术网

Ruby on rails 验证自定义消息?

Ruby on rails 验证自定义消息?,ruby-on-rails,ruby,validates-associated,Ruby On Rails,Ruby,Validates Associated,我尝试使用gem验证_操作符。 我需要为此验证自定义邮件: 验证:到达日期、离开日期、重叠:{ 经营范围:地址:, 消息标题:错误, 消息内容:无法在此日期预订此位置} 但是我有一个默认的消息:请检查下面的问题 Thx用于将来的答案。您还可以创建验证模型状态的方法,并在模型无效时将消息添加到错误集合中。然后必须使用validateapi类方法注册这些方法,并为验证方法的名称传递符号 您可以为每个类方法传递多个符号,并且相应的验证将按照注册的顺序运行 有效吗?方法将验证errors集合是否为空,因

我尝试使用gem验证_操作符。 我需要为此验证自定义邮件:

验证:到达日期、离开日期、重叠:{ 经营范围:地址:, 消息标题:错误, 消息内容:无法在此日期预订此位置}

但是我有一个默认的消息:请检查下面的问题


Thx用于将来的答案。

您还可以创建验证模型状态的方法,并在模型无效时将消息添加到错误集合中。然后必须使用validateapi类方法注册这些方法,并为验证方法的名称传递符号

您可以为每个类方法传递多个符号,并且相应的验证将按照注册的顺序运行

有效吗?方法将验证errors集合是否为空,因此当您希望验证失败时,自定义验证方法应向其中添加错误:

class Invoice < ApplicationRecord
  validate :expiration_date_cannot_be_in_the_past,
    :discount_cannot_be_greater_than_total_value

  def expiration_date_cannot_be_in_the_past
    if expiration_date.present? && expiration_date < Date.today
      errors.add(:expiration_date, "can't be in the past")
    end
  end

  def discount_cannot_be_greater_than_total_value
    if discount > total_value
      errors.add(:discount, "can't be greater than total value")
    end
  end
end
默认情况下,每次调用valid?时都将运行此类验证?或者保存对象。但是,也可以通过为validate方法提供一个:on选项,使用::create或:update来控制何时运行这些自定义验证

class Invoice < ApplicationRecord
  validate :active_customer, on: :create

  def active_customer
    errors.add(:customer_id, "is not active") unless customer.active?
  end
end