我正在尝试使用validates_timeliness
确保SliderImage.start
始终在SliderImage.stop
之前:
class SliderImage < ActiveRecord::Base
validates_datetime :start, :stop
validates :start, :timeliness => {:before => stop}
end
但当然stop
尚未定义。我怎么能做到这一点?
答案 0 :(得分:4)
必须在要评估的记录对象上调用停止值。简写版本通过符号:stop,这被假定为记录上的方法,将在验证时调用。
否则你可以像这样使用lambda
lambda {|r| r.stop }
我倾向于将您的验证写成
validates_datetime :start
validates_datetime :stop, :after => :start
P.S。我是该插件的作者:)
答案 1 :(得分:4)
使用此验证而不安装任何gem的更简单方法是调用验证方法:
class Course < ActiveRecord::Base
validate :start_date_before_end_date
def start_date_before_end_date
if self.start_date > self.end_date
errors.add(:start_date, "Start date should be before end date")
end
end
end