我有一个 Day 模型,它有一个日期列。我必须实现日期列不能有过去日期的验证。如果日期是过去的日期,则不得将其保存到数据库中,并在右侧给出适当的错误消息。我知道我可以将此验证放在 Controller 中,但我认为它违反了 MVC 规则,即让业务逻辑远离 Controller 。
有没有办法将此验证放在模型或其他任何地方,如果日期是过去的日期,那么它必须重定向回新操作并显示消息“日期不能是过去的日期”
请帮忙 提前致谢
最佳答案
在你的模型中你需要添加一个验证
validate :not_past_date
def not_past_date
if self.date < Date.today
errors.add(:date, 'not in past')
end
end
在您的 Controller 中,您只需检查保存是否返回 true 或 false。当您不验证您的模型时,将发送 False。如果 false 重定向到另一个 Controller 。
编辑:
正如 Simone Carletti 在评论中所说,您可以使用#past?
validate :not_past_date
def not_past_date
if self.date.past?
errors.add(:date, 'not in past')
end
end
关于ruby-on-rails - 评估日期是否不是模型中的过去日期之一——Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819381/