#ruby-on-rails #ruby #ruby-on-rails-3 #ruby-on-rails-3.1
#ruby-on-rails #ruby #ruby-on-rails-3 #ruby-on-rails-3.1
Вопрос:
В настоящее время я делаю следующее:
timestamp = Time.new.to_time.to_i.to_s
Есть ли в rails функция, которая делает это за вас?
Комментарии:
1. Ой, ве! Поговорим о том, чтобы упустить очевидное. Только что понял, что для текущей временной метки я могу просто использовать собственную функцию mysql
NOW()
2. Вопрос в том, зачем вам нужен традиционный столбец временной метки, когда Rails предоставляет волшебные столбцы
created_at
иupdated_at
сразу после их создания? Такие столбцы волшебным образом заполняются и обновляются Rails, как только они существуют в таблице (типDATETIME
)…3. для хранения других дат (дата истечения срока действия и т.д.), Которые имеют отношение к бизнес-логике
Ответ №1:
Rails делает это за вас!
Model.where("date=?", Time.now-5.days)
Автоматически сгенерирует штамп Time.now-5.days
вам не нужно их конвертировать! Чего вам не следует делать, так это sth. Нравится
Model.where("date=#{var here}")
Это устарело по соображениям безопасности и удобства использования!
Комментарии:
1. Ну, существующий код выдает временную метку
2011-11-07 03:59:15
при использованииTime.now
дает2011-11-07 03:59:15 -0800
.. обратите внимание на -0800, который прерывает sql-запрос
Ответ №2:
Возможно, вы захотите рассмотреть возможность использования волшебных столбцов created_at
и updated_at
типа DATETIME
. Rails автоматически обновит и заполнит эти столбцы, не нужно беспокоиться об этом во время вставок. Если у вас есть TIMESTAMP
столбцы из-за импорта устаревшей базы данных, рассмотрите возможность создания миграции, преобразующей Rails magic. Это интегрируется намного лучше, чем обработка таких странных столбцов временных меток, которые MySQL пытается обрабатывать совершенно непредсказуемым образом, плюс это приносит пользу вашей абстракции базы данных (она будет более независимой).