Rails 3 не сохраняет часть времени в полях datetime - PullRequest
1 голос
/ 11 июня 2011

Я заметил, что мое приложение rails 3 сохраняет поле даты и времени без части времени только дату. Я работаю с MySQL.

Моя миграция такая:

class CreateCampaigns < ActiveRecord::Migration
   def self.up
   create_table :campaigns do |t|
      t.string :name
      t.string :subject
      t.string :from_name
      t.string :from_email
      t.string :reply_to
      t.string :location
      t.datetime :send_in_date_time
      t.string :message
      t.string :test_email
      t.boolean :send_now
      t.timestamps
    end
  end

  def self.down
    drop_table :campaigns
  end
end

Допустим, я создал новую кампанию и установил поле send_in_date_time

campaign = Campaign.new
campaign.send_in_date_time = Time.now
campaign.save

В базе данных хранится это:

2011-09-20 00:00:00

Также create_at иified_at не хранят время. Я проверил базу данных и работает нормально, она хранит правильное время.

EDIT:

Проверка журналов Я обнаружил, что активная запись устанавливает дату без времени. Active Record не поддерживает дату и время?

UPDATE `campaigns` SET `updated_at` = '2011-06-10', `send_in_date_time` = '2011-09-19' WHERE `campaigns`.`id` = 1

1 Ответ

1 голос
/ 24 июня 2011

Я нашел решение.

Проблема заключалась в том, что я добавил в инициализатор старый код для форматов даты.похоже, этот код генерировал проблему.

file: date_format.rb content:

Time::DATE_FORMATS[:month_and_year] = "%B %Y"
Time::DATE_FORMATS[:note] = lambda { |time| time.strftime("%a, %b %e at %l:%M") + time.strftime("%p").downcase }
Time::DATE_FORMATS[:db] = lambda { |time| time.strftime("%Y-%m-%d")}
Time::DATE_FORMATS[:nice] = lambda { |time| time.strftime("%b %e, %Y")}

Я удалил этот код и все работало нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...