【问题标题】:Rails 3 not saving time part in datetimes fieldsRails 3 没有在日期时间字段中节省时间部分
【发布时间】:2011-06-10 21:14:31
【问题描述】:

我注意到我的 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 和 modified_at 也不存储时间。我测试了数据库并且工作正常,它存储了正确的时间。

编辑:

查看日志我发现活动记录设置的是没有时间的日期。 Active Record 不支持良好的日期时间?

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

【问题讨论】:

    标签: ruby-on-rails database datetime


    【解决方案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")}
    

    我删除了这段代码,一切正常

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2012-07-22
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多