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

Jenis Enumerasi dengan ActiveRecord dan Postgresql

Anda perlu beralih dari db/schema.rb ke db/structure.sql .

Masalah mendasarnya adalah schema.rb adalah representasi dari struktur database seperti yang dilihat ActiveRecord tetapi ActiveRecord tidak memahami banyak hal (seperti create type , PERIKSA batasan, dan hal lain yang muncul di execute some_raw_sql pernyataan dalam migrasi) yang dilakukan PostgreSQL. Anda dapat create type semua yang Anda inginkan kecuali schema.rb tidak akan pernah melihatnya.

Jika Anda ingin menggunakan hal-hal yang ActiveRecord tidak mengerti maka Anda harus menggunakan db/structure.sql untuk menyimpan struktur database Anda. structure.sql menyimpan struktur database seperti yang dipahami database, bukan seperti yang dipahami ActiveRecord.

Beralih itu mudah:

  1. Perbarui config/application.rb Anda berisi config.active_record.schema_format = :sql .
  2. Lakukan rake db:structure:dump untuk mendapatkan db/structure.sql awal .
  3. Hapus db/schema.rb dari pohon direktori dan kontrol revisi Anda.
  4. Tambahkan db/structure.sql untuk kontrol revisi.
  5. Sesuaikan kebiasaan menyapu Anda:
    • Gunakan db:structure:dump bukannya db:schema:dump
    • Gunakan db:structure:load bukannya db:schema:load

Yang mengatakan, saya tidak yakin seberapa baik enum asli PostgreSQL jenis akan berinteraksi dengan ActiveRecord karena saya belum pernah melakukannya. enum AR s adalah terjemahan sisi klien antara string dan bilangan bulat tetapi enum s ditangani di dalam database dan mereka tidak tahu satu sama lain. Mungkin ada konflik dan Anda harus memastikannya tetap sinkron satu sama lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan beberapa nilai ENUM di PostgreSQL

  2. PHPUnit:Bagaimana cara menguji interaksi basis data di server Postgres jarak jauh?

  3. Meningkatkan kinerja kueri jsonb Postgres yang dikombinasikan dengan kueri relasional

  4. Pembaruan Versi PostgreSQL Docker PGMASTER

  5. Mengambil id serial dari baris yang disisipkan batch di postgresql