Rails 3没有在日期时间字段中保存时间部分



我注意到我的rails 3应用程序保存的datetime字段没有时间部分,只有日期。我使用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和modified_at不存储时间。我测试了数据库,运行良好,存储正确的时间。

编辑:

通过查看日志,我发现活动记录正在设置没有时间的日期。活动记录不支持有效日期时间?

UPDATE `campaigns` SET `updated_at` = '2011-06-10', `send_in_date_time` = '2011-09-19' WHERE `campaigns`.`id` = 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")}

我删除了这个代码,一切都很好

相关内容

  • 没有找到相关文章

最新更新