Roh*_*hit 1 ruby validation datetime ruby-on-rails
我有一个日期列的日模型.我必须实现验证,即日期列不得有过去的日期.如果日期是过去的日期,则不能将其保存到数据库并在其上提供相应的错误消息.我知道我可以在控制器中进行此验证,但我认为它违反了MVC规则,即保持业务逻辑远离控制器.
有没有办法将此验证放在模型中或其他任何地方,如果日期是过去的日期,那么它必须重定向回新的操作,并显示消息"日期不能是过去的日期"
请提前帮助,谢谢
在您的模型中,您需要添加验证
validate :not_past_date
def not_past_date
if self.date < Date.today
errors.add(:date, 'not in past')
end
end
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您只需检查保存返回true或false.如果您未验证模型,则会发送False.如果false重定向到另一个控制器.
编辑:
就像Simone Carletti在评论中所说,你可以使用#past?
validate :not_past_date
def not_past_date
if self.date.past?
errors.add(:date, 'not in past')
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |