在ROR中处理不同的日期格式

时间:2011-06-22 17:08:03

标签: ruby-on-rails date

我正在尝试构建一个ROR应用程序,允许用户以各种格式输入日期,例如12/31/11(月/日/年)或31/12/11(日/月/年)。为了解释日期格式,我将有一个选择字段,用户可以从中选择日期格式。在保存记录之前,我可以在控制器中使用Date.strptime(value, format).to_s()

但是,我不确定控制器是否适合放置此信息。有没有办法可以在保存方法之前将其推送到模型中。

1 个答案:

答案 0 :(得分:0)

您可以按原样保存数据(在控制器中),并在模型中有另一个字段告诉它如何解释数据。然后,在before_validation回调中,您可以尝试根据给定的格式解析日期并将其写入相同的字段,现在作为日期。回来的路上可能会出现问题。然后,要再次在视图中显示它,您可以编写帮助程序 - 但更好的是,在模型中提供一个方法(例如,formatted_date),它将计算并显示日期。

然而,这个要求听起来很奇怪。为什么用户有责任选择日期格式?它不应该基于用户区域设置吗?

无论如何,我建议您在初始化程序中注册日期格式,而不是在整个应用程序中重复格式字符串。