在ruby模型中设置日期格式(sinatra / datamapper)

时间:2010-06-03 08:20:28

标签: ruby date sinatra datamapper

我有一个ruby模型,其中包含一个日期属性,我希望能够以dd / MM / yyyy格式作为参数传入。

但是,我的sqlite3 db以yyyy-MM-dd格式存储数据,因此当传入20/10/2010这样的日期时,它将不会被读取到数据库中。

我正在使用Sinatra框架并使用haml来创建标记。

我是否需要编写一个获取日期字符串的助手并将其转换为正确的db格式?或者我可以在models属性上设置格式类型吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您不必担心数据库的日期内部表示; DataMapper可以帮到你。您只需要确保传递一个有效的Date对象。

查看http://ruby-doc.org/core/classes/Date.html Date课程可用的方法。以你的例子:

require 'date'
mydate = '20/10/2010'
mydate_obj = Date::strptime(mydate, '%d/%m/%Y')
puts "#{mydate_obj}" # prints 2010-10-20

答案 1 :(得分:0)

我不知道这是否有帮助,前段时间我遇到了同样的问题:我正在使用Rack::Utils.escape_html(params[:datetime])来逃避用户输入的html,如果我在这样的表单字段中输入日期“25 / 02/2013“它将被发送到DataMapper模型,如下所示:16/02/2013(带有转义的html代码),因此它以错误的方式保存它(最后一天是小时或类似的东西)。 也许你也在用尴尬的方式使用“escape_html”方法?