Ben sorun var bir sütun için varsayılan ayar geri al:Raylar göçler: Rails bir göç olduğunu, bu örnekte olduğu gibi, bir sütun için varsayılan bir ayar kurar,
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
varsayalım, ben mi Bir sonraki geçişte varsayılan ayarları bırakın, bunu ray geçişlerini kullanarak nasıl yapabilirim?
Benim şu anki geçici çözüm böyle raylar göç özel bir sql komutunun yürütülmesi şöyledir:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Ama temel veritabanı nasıl şimdi bağımlı çünkü ben, bu yaklaşımı sevmiyorum bu komutu yorumlamak. Veritabanının değişmesi durumunda, bu sorgu belki de artık çalışmayabilir ve göç kırılır. Yani, raylarda bir sütun için varsayılan ayarın geri alınmasının ifade edilmesinin bir yolu var mı?
Postgre'lerde, bu aslında 'CHARACTER VARYING' sütunları için varsayılan değeri düşürmez, sadece 'NULL :: karakterini değiştirir '. –
Daha yeni sürümlerde, onu tersine çevirebilirsiniz. Örneğin: 'change_column_default (: table_name,: column_name, from: nil, to: false)' – Mark
@AttilaO. "ALTER CABLE table_name ALTER COLUMN type DROP DEFAULT" 'ı çalıştıran, "NULL" olarak ayarlamaya gerek yok. –