Change a column type from Date to DateTime during ROR migration

后端 未结 5 933
名媛妹妹
名媛妹妹 2020-12-07 08:58

I need to change my column type from date to datetime for an app I am making. I don\'t care about the data as its still being developed.

How can I do this?

相关标签:
5条回答
  • 2020-12-07 09:13

    There's a change_column method, just execute it in your migration with datetime as a new type.

    change_column(:my_table, :my_column, :my_new_type)
    
    0 讨论(0)
  • 2020-12-07 09:21

    AFAIK, migrations are there to try to reshape data you care about (i.e. production) when making schema changes. So unless that's wrong, and since he did say he does not care about the data, why not just modify the column type in the original migration from date to datetime and re-run the migration? (Hope you've got tests:)).

    0 讨论(0)
  • 2020-12-07 09:30

    In Rails 3.2 and Rails 4, Benjamin's popular answer has a slightly different syntax.

    First in your terminal:

    $ rails g migration change_date_format_in_my_table
    

    Then in your migration file:

    class ChangeDateFormatInMyTable < ActiveRecord::Migration
      def up
       change_column :my_table, :my_column, :datetime
      end
    
      def down
       change_column :my_table, :my_column, :date
      end
    end
    
    0 讨论(0)
  • 2020-12-07 09:38

    First in your terminal:

    rails g migration change_date_format_in_my_table
    

    Then in your migration file:

    For Rails >= 3.2:

    class ChangeDateFormatInMyTable < ActiveRecord::Migration
      def up
        change_column :my_table, :my_column, :datetime
      end
    
      def down
        change_column :my_table, :my_column, :date
      end
    end
    
    0 讨论(0)
  • 2020-12-07 09:38

    Also, if you're using Rails 3 or newer you don't have to use the up and down methods. You can just use change:

    class ChangeFormatInMyTable < ActiveRecord::Migration
      def change
        change_column :my_table, :my_column, :my_new_type
      end
    end
    
    0 讨论(0)
提交回复
热议问题