0

是否可以创建一列或更改一列以使用默认格式键入日期?就像是:

def change
    change_column :mytable, :mydate, :date [:default]="%d/%m/%Y"
end
4

1 回答 1

0

据我所知没有。但是你到底为什么要这样做呢?

Rails 会提取一个日期并自动将其设为日期/时间(根据您的列类型)对象。如果您需要以不同的方式显示您的日期,我强烈建议您使用 strftime,如下所示:

@foo.created_at.strftime('%F')

以下是不同选项的列表:http ://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime

更新

在 Draper 中使用装饰器:https ://github.com/drapergem/draper

我建议重命名该方法,但现在如果您不想这样做,可以简单地覆盖它:

# app/decorators/article_decorator.rb
class ArticleDecorator < Draper::Decorator
  delegate_all

  def published_at
    source.published_at.strftime("%A, %B %e")
  end
end

你会喜欢这样:

@article.decorate.published_at

在默认状态下,返回的日期不会被格式化,这很好。

如果你必须这样做where("date.strftime('%d/%m/%Y') >= ?",fdate,那你就做错了。再次,坚持默认格式。

于 2013-02-02T16:59:36.720 回答