2011-06-10 70 views
1

我注意到我的Rails 3应用程序正在保存日期时间字段,而没有时间部分只有日期。我使用mysql。Rails 3不在日期时间字段中保存时间部分

我的迁移是这样的:

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和modified_at不存储时间。我一直在测试数据库,并正常工作,正确存储时间。

编辑:

检查我发现,活动记录设置没有时间日期的日志。活动记录不支持很好的日期时间?

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

回答

1

我找到了解决方案。

问题是我在初始化程序中为日期格式添加了旧代码。看起来像这个代码产生的问题。

文件:date_format.rb 内容:

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")} 

我删除此代码,一切运行良好

相关问题