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
砰!错误,当 start_at 或 end_at 为 nil 时。
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'
Afaik 也可以使用自定义验证器来实现这一点,但我认为情况并非如此,因为每个类只有一个验证器,所以我应该为 3 个检查做三个类,不是吗?
附言
应用程序有一个会议模型,具有 start_at 和 end_at DateTime 类型属性,分别表示会议的开始和结束。我需要实现下一个逻辑 start_at < end_at (它在结束之后开始) start_at.day == end_at.day (会议在一天内结束)并且会议只能在当月创建。