Rails 4 (diğer Rails 4 cevaplarında sorun var):
def change
change_column_null(:users, :admin, false, <put a default value here> )
# change_column(:users, :admin, :string, :default => "")
end
İçinde NULL değerleri olan bir sütunun NULL değerine izin vermeyecek şekilde değiştirilmesi sorunlara neden olur. Bu tam olarak geliştirme kurulumunda iyi çalışacak ve daha sonra LIVE üretiminize dağıtmaya çalıştığınızda çökecek kod türüdür . Önce NULL değerlerini geçerli bir şeye değiştirmeli ve sonra NULL değerlerine izin vermemelisiniz. 4. değer change_column_null
tam olarak bunu yapar. Daha fazla ayrıntı için belgelere bakın.
Ayrıca, genellikle yeni bir nesne oluşturduğumda alanın değerini belirtmem gerekmeyecek şekilde alan için varsayılan bir değer ayarlamayı tercih ederim. Ben de bunu yapmak için yorum kodu dahil.
MyModel.update_all({:date_column => Time.now}, {:date_column => nil})
. Orijinal formunuzdaki sorgu, tüm modellerimin alanda nil değerine sahip olmasını sağladı.