У меня проблема с ActiveRecord, вставляющим DATETIME в соответствии с документацией; «Active Record автоматически ставит метки времени для операций создания и обновления, если в таблице есть поля с именами created_at / created_on или updated_at / updated_on». У меня есть столбец с именем created_at, но ActiveRecord не вставляет DATETIME. Мой запрос на вставку выглядит следующим образом:
def add_record(server_id, backup_type)
Record.create(:server_id => server_id, :backup_type => backup_type)
end
Я знаю, что могу вставить время, используя что-то вроде
:created_at => "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"
Причина, по которой я хочу держаться подальше от этого, связана с различиями во времени между серверами, как локально, так и географически. Мне интересно, есть ли способ запустить тип в том же методе создания, например:
def add_record(server_id, backup_type)
Record.create(:server_id => server_id, :backup_type => backup_type, created_at => DATETIME())
end
Спасибо.






Если тип поля created_at - Отметка времени, то вы можете использовать функцию CURRENT_TIMESTAMP () для установки значения поля.
У вас есть столбец created_at, но ActiveRecord не создает метку времени? Какой тип столбца у вашего столбца created_at? Может быть, вы могли бы показать нам свою миграцию?
Кроме того, если вы скажете Rails использовать UTC (я думаю, по умолчанию в 2.2), значения времени будут правильными, независимо от различных локалей сервера.
И, наконец: вы можете просто передать экземпляр time / date / datetime, вам не нужно форматировать его самостоятельно. Например. YourModel.create(:a_time_column => Time.now)
по какой-то причине я делал CallLog.callstart = Date.new. которые устанавливают значение 0000-00-00 00:00:00. на основе этого ответа я изменил его на CallLog.callstart = Time.now, и теперь я чувствую себя намного лучше.