PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

migrasi rel:postgresql untuk md5 string acak sebagai default

Catatan :Anda mungkin ingin melihat brcebn's jawab jika Anda menggunakan versi Rails yang lebih baru.

Rails akan mencoba menafsirkan ini:

t.string :uniqueid, default: md5(random()::text)

sebagai kode Ruby dan :default => md5(...) tidak berarti apa-apa di Ruby. Jika Anda mengutipnya, maka Rails akan menganggapnya sebagai string dan menjadikan nilai default untuk uniqueid string 'md5(random()::text)' dan itu tidak akan membantu.

Jika Anda ingin menggunakan pemanggilan fungsi di kolom default, Anda dapat melakukan alter table dengan tangan:

connection.execute(%q{
    alter table your_table alter column uniqueid set default md5(random()::text)
})

Itu akan memberi Anda default yang Anda inginkan dalam database tetapi Anda mungkin memperhatikan bahwa tidak ada penyebutan default baru di schema.rb Anda . Jika Anda menginginkan skema yang dapat digunakan maka Anda harus menggunakan skema SQL dengan meletakkan ini di application.rb :

config.active_record.schema_format = :sql

Kemudian hapus schema.rb Anda dan gunakan structure.sql alih-alih. Perhatikan bahwa dump skema SQL rusak hingga 3.2 dan ada masalah pemuatan skema di berbagai versi Rails (tetapi Anda selalu dapat psql < structure.sql jalan sekitar itu). Sisi baiknya, dump skema SQL akan melacak hal-hal mewah kunci asing nyata, memeriksa batasan, pemicu, ...

BTW, jika Anda benar-benar menginginkan SHA maka Anda harus melihat digest fungsi dari pgcrypto .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah kita mendefinisikan fungsi GROUP_CONCAT di PostgreSQL?

  2. Menutup koneksi klien postgres (pg) di node.js

  3. Tidak dapat menemukan titik masuk bernama 'InterlockedIncrement' di DLL 'kernel32.dll' - [dilindungi email] 64 bit

  4. Buat aturan atau pemicu Postgres untuk secara otomatis mengonversi kolom menjadi huruf kecil atau huruf besar saat disisipkan

  5. Bidang Rails yang merupakan larik objek JSON?