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?

Jawaban:



253

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

change_column_null :users, :address, true

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.