Saya perlu mengubah jenis kolom saya dari tanggal ke waktu untuk aplikasi yang saya buat. Saya tidak peduli dengan data karena masih sedang dikembangkan.
Bagaimana saya bisa melakukan ini?
Saya perlu mengubah jenis kolom saya dari tanggal ke waktu untuk aplikasi yang saya buat. Saya tidak peduli dengan data karena masih sedang dikembangkan.
Bagaimana saya bisa melakukan ini?
Pertama di terminal Anda:
rails g migration change_date_format_in_my_table
Kemudian di file migrasi Anda:
Untuk 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
change
metode tidak digunakan sebagai penggantiup
dandown
metode, itu karena parachange
metode tidak mendukungchange_column
definisi migrasi .Juga, jika Anda menggunakan Rails 3 atau yang lebih baru, Anda tidak harus menggunakan
up
dandown
metode. Anda bisa menggunakanchange
:sumber
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
Dalam Rails 3.2 dan Rails 4, jawaban populer Benjamin memiliki sintaks yang sedikit berbeda.
Pertama di terminal Anda:
Kemudian di file migrasi Anda:
sumber
Ada metode change_column , jalankan saja dalam migrasi Anda dengan datetime sebagai tipe baru.
sumber
AFAIK, ada migrasi untuk mencoba membentuk kembali data yang Anda pedulikan (yaitu produksi) ketika membuat perubahan skema. Jadi, kecuali itu salah, dan karena dia memang mengatakan dia tidak peduli dengan data, mengapa tidak hanya memodifikasi tipe kolom dalam migrasi asli dari tanggal ke datetime dan menjalankan kembali migrasi? (Semoga Anda punya tes :)).
sumber
rake db:migrate:reset
.