Есть ли у rails способ получить временную метку для использования запроса mysql?

#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 пытается обрабатывать совершенно непредсказуемым образом, плюс это приносит пользу вашей абстракции базы данных (она будет более независимой).