Migrasi Rails: Hapus kendala

138

Saya memiliki tabel di aplikasi Rails yang (di schema.rb) terlihat seperti:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address", :null=>false
end

Saya ingin menulis migrasi rel untuk memungkinkan nulls untuk bidang alamat. yaitu setelah migrasi tabel terlihat seperti ini:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address"
end

Apa yang harus saya lakukan untuk menghilangkan kendala tersebut?

Jay Godse
sumber

Jawaban:

253

Di Rails 4+ untuk menghapus batasan not-null, Anda dapat menggunakan change_column_null:

change_column_null :users, :address, true
deepak
sumber
Apakah Anda benar-benar mencoba ini? Jika Anda melirik kode sumber untuk fungsi tersebut, Anda tidak melihat apa-apa selain:raise NotImplementedError, "change_column_null is not implemented"
drusepth
4
telah menggunakannya di postgresql. rails mendefinisikannya dalam adaptor khusus database, lihat postgres , mysql . dapat mencari orang lain di apidock . Jadi, Anda harus memeriksa adaptor database untuk mendapatkan dukungan, jika ada yang mendapatNotImplementedError
deepak
1
Beri suara positif! Ini juga tautan ke panduan Rails .
mcKain
1
Ini harus menjadi jawaban yang dipilih
nahtnam