我有一个ruby模型,其中包含一个日期属性,我希望能够以dd / MM / yyyy格式作为参数传入。
但是,我的sqlite3 db以yyyy-MM-dd格式存储数据,因此当传入20/10/2010这样的日期时,它将不会被读取到数据库中。
我正在使用Sinatra框架并使用haml来创建标记。
我是否需要编写一个获取日期字符串的助手并将其转换为正确的db格式?或者我可以在models属性上设置格式类型吗?
感谢。
答案 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”方法?