Rails 4 (jawaban Rails 4 lainnya bermasalah):
def change
change_column_null(:users, :admin, false, <put a default value here> )
# change_column(:users, :admin, :string, :default => "")
end
Mengubah kolom dengan nilai NULL di dalamnya untuk tidak mengizinkan NULL akan menyebabkan masalah. Ini persis jenis kode yang akan berfungsi dengan baik dalam pengaturan pengembangan Anda dan kemudian macet ketika Anda mencoba untuk menyebarkannya ke produksi LIVE Anda . Anda harus terlebih dahulu mengubah nilai NULL menjadi sesuatu yang valid dan kemudian melarang NULL . Nilai 4 di change_column_null
melakukan hal itu. Lihat dokumentasi untuk lebih jelasnya.
Juga, saya umumnya lebih suka menetapkan nilai default untuk bidang sehingga saya tidak perlu menentukan nilai bidang setiap kali saya membuat objek baru. Saya menyertakan kode komentar untuk melakukannya juga.
MyModel.update_all({:date_column => Time.now}, {:date_column => nil})
. Permintaan dalam bentuk asli Anda hanya membuat semua model saya memiliki nilai nol di bidang.