можно использовать .to_s (: long) в Postgres с датой типа столбца на Heroku в рельсах? - PullRequest
1 голос
/ 27 июня 2010

У меня есть дата типа столбца (показана из аннотации) в моей таблице контактов:

#  date_entered       :date(255)

Эта строка кода работала для меня локально в моей базе данных sqlite3, но теперь выдает ошибкув Heroku:

<%= contact.date_entered.to_s(:long) %>

Я получаю сообщение об ошибке:

wrong number of arguments (1 for 0)

Я удалил компонент :long и он работает, но теперь, конечно, выглядит плохо отформатированным.

Как мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 27 июня 2010

Это действительно поле даты postgres?

end_date           | date   

это то, что postgres имеет в качестве поля даты, вы можете проверить саму таблицу?Также придерживаюсь contact.date_entered.class где-то в поле зрения, чтобы выяснить, какой именно класс Ruby.

У меня есть большая догадка, что это не отметка времени или поле даты.Скорее всего, на самом деле текст или varchar и, следовательно, ActiveRecord интерпретирует его таким образом.

0 голосов
/ 27 июня 2010

Используйте

date.strftime('%m/%d/%Y')

для форматирования даты.

Также вы можете переопределить метод to_s для даты / времени, чтобы использовать локализацию I18n:

class Date
  def to_s format = :default
    I18n.l(self, :format => format)
  end
end

В этом случае можно использовать оба формата: logn (: default,: short) и «% d% B,% Y».

UPD: Также имеет смысл сохранить старый метод и вызывать его, если вы не передали никаких параметров:

class Date
  alias :to_s :native_to_s

  def to_s format = nil
    format.nil? ? 
      self.native_to_s : 
      I18n.l(self, :format => format)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...