2011-04-15 18 views
98

Rails uygulamasında (schema.rb dosyasında) görünen bir tablo var:Raylar Göç: Kısıtlamayı kaldır

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

Adres alanı için boş değerlere izin vermek üzere bir geçiş geçişi yazmak istiyorum. yani, geçişten sonra tablo şuna benzer:

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

Kısıtlamayı kaldırmak için ne yapmam gerekiyor?

cevap

145

... yani

change_column :users, :address, :string, :null => true 

Dokümanlar gibi change_column kullanacağı change_column_null

change_column_null :users, :address, true

+4

Bu daha fazla kışkırtılmalıdır! –

+0

Bunu gerçekten denedin mi? Fonksiyonun kaynak koduna bakarsanız, bir şey göremezsiniz: 'notImplementedError, 'change_column_null uygulanmadı'' – drusepth

+3

postgresql'de kullandı. Raylar özel adaptör bkz veritabanında tanımlar [postgres] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/PostgreSQLAdapter/SchemaStatements/change_column_null), [MySQL] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/AbstractMysqlAdapter/change_column_null). [apidock] 'da başkalarını arayabilir (http://apidock.com/rails/search?query=change_column_null). Yani, herhangi bir "NotImplementedError" – deepak