【问题标题】:Rails 3, changing field in model from string to datetime typeRails 3,将模型中的字段从字符串更改为日期时间类型
【发布时间】:2011-01-11 15:27:26
【问题描述】:

在制作模型时,我将行类型设为字符串(当时我不知道日期时间)。目前我有很多记录都填满了该行。有没有一种安全的方法可以通过迁移将模型的行转换为日期时间 - 除了删除它,然后再添加回来?

谢谢!

【问题讨论】:

    标签: mysql ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    根据文档,这是一个在日期时间中转换字符串的迁移示例。我不确定它是否会起作用,因此您可能想在进入 prod 环境之前在 dev/stage 环境中尝试一下。

    class ChangeColumnToUsers < ActiveRecord::Migration
      def self.up
        change_column :users, :created_at, :datetime
    
      end
    
      def self.down
        change_column :users, :created_at, :string
      end
    end
    

    【讨论】:

    • MySQL 似乎做了一个内部CONVERT(users.created_at, DATETIME) -- 我发现这可以无缝地工作,因为我在 created_at 列中的字符串格式正确。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2023-04-04
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多