Ruby on rails 3 在自定义验证之前验证存在性

Ruby on rails 3 在自定义验证之前验证存在性,ruby-on-rails-3,validation,activerecord,activemodel,Ruby On Rails 3,Validation,Activerecord,Activemodel,砰!错误,当开始时,或结束时为零 validates :place_id, :title, :level, :start_at, :end_at, :presence => true validate :event_takes_place_in_one_day, :event_is_not_in_past def event_takes_place_in_one_day binding.pry self.start_at.day == self.end_at end 好

砰!错误,当开始时,或结束时为零

validates :place_id, :title, :level, :start_at, :end_at, :presence => true
validate :event_takes_place_in_one_day, :event_is_not_in_past

def event_takes_place_in_one_day
    binding.pry
    self.start_at.day == self.end_at
end
好吧,也可以用自定义验证器实现这一点,但我想不是这样,因为每个类只有一个验证器,所以我应该用三个类进行三次检查,不是吗

附言

应用程序有一个会议模型,其开始时间为,结束时间为DateTime类型 属性,指示会议的开始和结束 分别地 我需要实现下一个逻辑 开始时间<结束时间(开始时间晚于结束时间) 开始时间=结束时间(会议在一天内结束)
而且只能为当月创建会议。

零检查对您有效吗

undefined method `to_datetime' for nil:NilClass
-
app/models/meeting.rb:22:in `cover?'
app/models/meeting.rb:22:in `event_is_not_in_past'
app/controllers/meetings_controller.rb:18:in `create'
def event_takes_place_in_one_day
  #only execute if start_at & end_at is not nil
  unless self.start_at.nil? || self.end_at.nil?
    binding.pry
    self.start_at.day == self.end_at 
  end
end