Üretilen bir UUID değerini varsayılan olarak bir varchar olarak tire olmayan bir sütun eklemeye çalışıyorum (32). Şu anda bu benim göç vardır şudur:Bir sınırla add_column ve Postgres Fonksiyonu ile rails rayları
add_column :users, :uuid, :string, limit: 32, default: "REPLACE(uuid_generate_v4(), '-', '')"
Ancak, yalnızca dize metin olarak o ayarlıyor çünkü dışarı hata gibi görünüyor:
PG::StringDataRightTruncation: ERROR: value too long for type character varying(32)
Bir varsayılan ayarlama konusunda doğru belge bulmak gibi olamaz bir sql açıklamaya değer, ancak 5 (https://github.com/rails/rails/pull/20005)
Keşke koşmak ? Örneğim postgres işleviydi ve yakut değil, ama ruby içinde yaptığım şekilde 'before_create' içinde (yani sadece bir kez çalışır)' self.uuid || = SecureRandom.uuid.gsub ("-", "") '('||' böylece manuel olarak ayarlamayı seçebilirsiniz). Ben çoğunlukla sadece –
şeylerin postgres tarafında yapmak mümkün olmakla ilgileniyorum Ben validate aynı zamanda güncelleme ateş gibi çalışacağından önce tamamen haklısınız. İşlev hakkında hiçbir fikrim yok, sadece senin örneğinden kopuyordum. Yani, postgresql kullandığınız için (hata bildiriminizdeki gibi), çözümünüzü buldum ve cevabımı güncelledim. – John
Vay, tüm bu bağlantıyı okuyarak Aktif Kayıt aslında çok sayıda postgresql özel özelliğini desteklemektedir. – John