Rails 4: Daftar tipe data yang tersedia

406

Di mana saya dapat menemukan daftar tipe data yang dapat digunakan di Ruby on Rails 4? Seperti

  • text
  • string
  • integer
  • float
  • date

Saya terus belajar tentang yang baru dan saya ingin memiliki daftar yang bisa saya lihat dengan mudah.

Nicolas Raoul
sumber
1
@MarkThomas: Bukan duplikat. Pertanyaan saya di sini adalah khusus untuk Rails 4.
Nicolas Raoul
Jawaban yang diterima dalam pertanyaan itu pada dasarnya sama dengan jawaban yang Anda terima. Keduanya menunjuk ke Rails 4 docs. Juga, ini adalah poin yang bisa diperdebatkan karena datatypes ActiveRecord tidak berubah dari Rails 3 ke Rails 4.
Mark Thomas
10
Saya untuk satu tidak tahu tipe data AR tidak berubah antara rel 3 dan 4 jadi saya bersyukur pertanyaan / jawaban ini ada di sini.
Dty

Jawaban:

667

Berikut ini semua tipe data Rails 4 (migrasi ActiveRecord):

  • :binary
  • :boolean
  • :date
  • :datetime
  • :decimal
  • :float
  • :integer
  • :bigint
  • :primary_key
  • :references
  • :string
  • :text
  • :time
  • :timestamp

Sumber: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
Ini sama dengan Rails 3 .

Jika Anda menggunakan PostgreSQL, Anda juga dapat memanfaatkan ini:

  • :hstore
  • :json
  • :jsonb
  • :array
  • :cidr_address
  • :ip_address
  • :mac_address

Mereka disimpan sebagai string jika Anda menjalankan aplikasi Anda dengan database tidak-PostgreSQL.

Edit, 2016-Sep-19:

Ada lebih banyak tipe data spesifik postgres di Rails 4 dan bahkan lebih banyak di Rails 5.

Nicolas Raoul
sumber
1
Saya percaya ini adalah tipe data yang didukung di semua basis data. Namun seperti yang disebutkan Peter de Ridder ada beberapa tipe data seperti hstore yang masih didukung.
Althaf Hameez
Pertanyaan: dokumentasi postgres tampaknya tidak memiliki texttipe data. Namun, rel masih bisa menanganinya? Apa yang terjadi di latar belakang?
ahnbizcad
PostgreSQL memang memiliki tipe data teks. Di bawah kap semua bidang varchar / teks adalah array panjang variabel. postgresql.org/docs/9.3/interactive/datatype-character.html
makhan
Saya ingin menambahkan bahwa jika Anda menggunakan database non-postgres dan schema_format aplikasi Anda tidak disetel untuk digunakan: sql, maka file schema.rb Anda tidak akan dapat membuang tabel yang menggunakan tipe seperti: json. Skema masih akan dicampakkan untuk tabel yang menggunakan tipe default tetapi Anda akan melihat komentar untuk tabel dengan tipe khusus seperti, "tidak bisa membuang tabel ...". Lihat di sini untuk mengatur schema_format .
bpercevic
Juga, kolom-kolom itu akan memiliki tipe nildalam basis data non-postgres. Anda dapat memeriksa jenis di konsol dengan Model.columns_hash["column_name"].type. Ini hanya hal-hal yang saya temui ketika menggunakan: tipe kolom json, saya mungkin salah dan ini mungkin tidak terjadi pada semua orang tapi saya pikir saya akan memberi tahu pembaca di masa depan jika mereka memiliki masalah. Apapun, +1 untuk jawaban ini karena sangat membantu saya.
bpercevic
249

Anda mungkin juga perlu mengetahui secara umum jenis data apa yang digunakan untuk:

  • :string- untuk tipe data kecil seperti judul. ( Haruskah Anda memilih string atau teks? )
  • :text - untuk potongan data teks yang lebih panjang, seperti paragraf informasi
  • :binary - untuk menyimpan data seperti gambar, audio, atau film.
  • :boolean - untuk menyimpan nilai benar atau salah.
  • :date - hanya menyimpan tanggal
  • :datetime - simpan tanggal dan waktu ke dalam kolom.
  • :time - hanya untuk waktu
  • :timestamp- untuk menyimpan tanggal dan waktu ke dalam kolom. ( Apa perbedaan antara datetime dan timestamp? )
  • :decimal- untuk desimal ( contoh cara menggunakan desimal ).
  • :float- untuk desimal. ( Apa perbedaan antara desimal dan float? )
  • :integer - adalah untuk bilangan bulat.
  • :primary_key - kunci unik yang dapat mengidentifikasi secara unik setiap baris dalam tabel

Ada juga referensi yang digunakan untuk membuat asosiasi. Tapi, saya tidak yakin ini adalah tipe data aktual .

Tipe data Rails 4 baru tersedia di PostgreSQL:

Pelajari lebih lanjut tentang tipe data alamat di sini dan di sini .

Juga, inilah panduan resmi tentang migrasi: http://edgeguides.rubyonrails.org/migrations.html

bunga-bunga
sumber
13
Tepuk tangan. +1 untuk ketelitian, dan antisipasi penggunaan. Itulah mentalitas UX di sana.
ahnbizcad
5
Jawaban yang benar-benar hebat - terima kasih banyak atas ini. Tautan ke artikel tentang perbedaan benar-benar mengeluarkan pertanyaan langsung dari mulut saya.
nlh
3
Untuk Postgres ada juga uuidtipe yang dapat digunakan sebagai bidang normal suka t.uuid :name... atau sebagai kunci utama seperti create_table :users, id: :uuid do...atau misalnyat.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT
1
Tipe PostgreSQL tambahan didukung oleh Rails yang tercantum dalam API docs forActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods . Highlights termasuk money, json, xml,daterange
Eliot Sykes
1
Ya, uuid ditambahkan untuk Postgres, tetapi tidak dikembalikan dengan membuat Rekaman Aktif (). Apakah masalah itu telah diperbaiki dengan Rails 5?
Martin Sommer
156

Penting untuk mengetahui tidak hanya tipe tetapi juga pemetaan tipe ini ke tipe basis data:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


Sumber ditambahkan - Agile Web Development with Rails 4

Gotqn
sumber
1
Saya akan tertarik untuk melihat tipe json di tabel ini, jika Anda merasa
sanggup melakukannya
2
Anda selalu dapat memeriksa NATIVE_DATABASE_TYPESadaptor yang Anda butuhkan - github.com/rails/rails/blob/master/activerecord/lib/…
gotqn
Apakah ada titik di panduan atau satu sumber kebenaran untuk hal-hal ini dari waktu ke waktu?
Hugo
81

Anda dapat mengakses daftar ini setiap kali Anda inginkan (bahkan jika Anda tidak memiliki akses Internet) melalui:

rails generate model -h
tomascharad
sumber
5

Rails4 memiliki beberapa tipe data tambahan untuk Postgres.

Misalnya, railscast # 400 menyebutkan dua di antaranya:

Rails 4 memiliki dukungan untuk tipe data asli di Postgres dan kami akan menunjukkan dua di antaranya, meskipun lebih banyak yang didukung: array dan hstore. Kita dapat menyimpan array di kolom tipe string dan menentukan tipe untuk hstore.

Selain itu, Anda juga dapat menggunakan cidr, inet, dan macaddr. Untuk informasi lebih lanjut:

https://blog.engineyard.com/2013/new-in-rails-4

Peter de Ridder
sumber