0

我的模型中有这两个字段 - recurring_intervalrecurring_time - 我需要验证这两个字段将同时设置或不设置。

如果用户想要设置重复,他将需要设置这两个列。但如果他不这样做,他会将这些列留空。

怎么做?

4

2 回答 2

0

您可以添加自定义验证:

class MyModel
  ...
  validate :verify_recurring_stuff
  ..

  private
  def verify_recurring_stuff
    ri = self.recurring_interval
    rt = self.recurring_time

    if ri.blank? != rt.blank?
      self.errors.add(:base, 'Your error message')
    end
  end
end
于 2013-11-14T14:29:15.397 回答
0
class User < ActiveRecord::Base
  validates_with Recurring_validator
end

class RecurringValidator < ActiveModel::Validator
  def validate(record)
    if record.recurring_interval.blank? != record.recurring_time.blank?
      record.errors[:base] << "Error message" 
    end
  end
end

这种方法的优点是,您也可以将验证器类用于其他模型。

于 2013-11-14T14:34:16.943 回答