Raylar 4: Mevcut veri tiplerinin listesi


406

Ruby on Rails 4'te kullanılabilecek veri türlerinin listesini nerede bulabilirim? Gibi

  • text
  • string
  • integer
  • float
  • date

Yenilerini öğrenmeye devam ediyorum ve kolayca başvurabileceğim bir liste olmasını çok isterim.



1
@ MarkThomas: Kopya değil. Benim sorum burada Rails 4 için.
Nicolas Raoul

Bu sorudaki kabul edilen cevap, esasen kabul edilen cevabınızla aynıdır. Her ikisi de Rails 4 belgesine işaret ediyor. Ayrıca, tartışmalı bir nokta çünkü ActiveRecord veri türleri Rails 3'ten Rails 4'e değişmedi.
Mark Thomas

10
Biri için AR veri tiplerinin raylar 3 ve 4 arasında değişmediğini bilmiyordum, bu yüzden bu soru / cevap burada şükrediyorum.
Dty

Yanıtlar:


667

Tüm Rails 4 (ActiveRecord taşıma) veri türleri şunlardır:

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

Kaynak: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
Bunlar Rails 3 ile aynıdır .

PostgreSQL kullanıyorsanız, bunlardan da yararlanabilirsiniz:

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

Uygulamanızı PostgreSQL olmayan bir veritabanıyla çalıştırırsanız dizeler olarak saklanırlar.

Edit, 2016-Eylül-19:

Orada çok daha fazla postgres belirli Raylar 4'te datatypes ve hatta daha Raylar 5'de.


1
Bunların tüm veritabanlarında desteklenen veri türleri olduğuna inanıyorum. Ancak Peter de Ridder'ın bahsettiği gibi, hstore gibi hala desteklenen bazı veri türleri vardır.
Althaf Hameez

Soru: postgres belgelerinde textveri türü yok gibi görünüyor . Yine de, raylar hala başa çıkabilir mi? Arka planda neler oluyor?
ahnbizcad

PostgreSQL'in metin veri türü vardır. Kaputun altında tüm varchar / metin alanları değişken uzunluklu dizilerdir. postgresql.org/docs/9.3/interactive/datatype-character.html
makhan

Postgres olmayan bir veritabanı kullanıyorsanız ve uygulama schema_format kullanmak için ayarlanmamışsa: sql, o zaman schema.rb dosyanız aşağıdaki gibi türleri kullanan tabloyu dökmek mümkün olmayacağını eklemek istiyorum: json. Şema, varsayılan türleri kullanan tablolar için kopyalanmaya devam edecek, ancak "tabloyu dökemedi ..." gibi özel türlere sahip tablo için bir yorum göreceksiniz. Schema_format'ı ayarlamak için buraya bakın .
bpercevic

Ayrıca, bu sütunlar nilpostgres olmayan bir veritabanına yazacaktır. Konsoldaki türü ile inceleyebilirsiniz Model.columns_hash["column_name"].type. Bunlar sadece kullanırken karşılaştığım şeyler: json sütun türü, yanlış olabilir ve bu herkesin başına gelmeyebilir, ancak gelecekteki okuyucuların sorun olması durumunda haber vereceğini düşündüm. Ne olursa olsun, bu cevap için +1 çünkü bana gerçekten yardımcı oldu.
bpercevic

249

Bu veri türlerinin ne için kullanıldığını genel olarak bilmek de yararlı olabilir:

  • :string- başlık gibi küçük veri türleri içindir. ( Dize veya metin seçmeli misiniz? )
  • :text - bilgi paragrafı gibi daha uzun metinsel veri parçaları içindir
  • :binary - resim, ses veya film gibi verileri depolamak içindir.
  • :boolean - doğru veya yanlış değerleri saklamak içindir.
  • :date - yalnızca tarihi depola
  • :datetime - tarih ve saati bir sütunda saklayın.
  • :time - sadece zaman içindir
  • :timestamp- tarih ve saati bir sütuna kaydetmek için. (tarih / saat ve zaman damgası arasındaki fark nedir? )
  • :decimal- ondalık sayılar içindir (ondalık sayıların nasıl kullanılacağına örnek ).
  • :float- ondalık sayılar içindir. ( Ondalık ve kayan noktalı sayı arasındaki fark nedir? )
  • :integer - tam sayılar içindir.
  • :primary_key - tablodaki her satırı benzersiz şekilde tanımlayabilen benzersiz anahtar

Dernekler oluşturmak için kullanılan referanslar da vardır. Ancak, bunun gerçek bir veri türü olduğundan emin değilim .

Yeni Raylar PostgreSQL'de mevcut 4 veri türü:

  • :hstore- anahtar / değer çiftlerini tek bir değerde depolama ( bu yeni veri türü hakkında daha fazla bilgi edinin )
  • :array- belirli bir satırdaki sayıların veya dizelerin düzenlenmesi ( hakkında daha fazla bilgi edinin ve örneklere bakın )
  • :cidr_address - IPv4 veya IPv6 ana bilgisayar adresleri için kullanılır
  • :inet_address - cidr_adresi ile aynı IPv4 veya IPv6 ana bilgisayar adresleri için kullanılır, ancak ağ maskesinin sağında sıfır olmayan bitlere sahip değerleri de kabul eder
  • :mac_address - MAC ana bilgisayar adresleri için kullanılır

Burada ve burada adres veri türleri hakkında daha fazla bilgi edinin .

Ayrıca, göçlerle ilgili resmi kılavuz: http://edgeguides.rubyonrails.org/migrations.html


13
Alkış. Kapsam ve kullanım beklentisi için +1. Tam burada UX zihniyeti var.
ahnbizcad

5
Kesinlikle müthiş cevap - bunun için çok teşekkürler. Farklılıklar hakkındaki makalelere bağlantılar, kelimenin tam anlamıyla soruları ağzımdan çıkardı.
nlh

3
Postgres'in bir ilave vardır uuidolarak kullanılabilir tipi normal bir alan gibi t.uuid :name... veya primer gibi anahtar olarak create_table :users, id: :uuid do...veya örneğint.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT

1
İçin API belgelerindeActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods listelenen Rails tarafından desteklenen ek PostgreSQL türleri . Önemli özellikleri money, json, xml,daterange
Eliot Sykes

1
Evet, Postgres için uuid eklendi, ancak bir Active Record create () ile döndürülmedi. Bu sorun Rails 5 ile giderildi mi?
Martin Sommer

156

Sadece türleri bilmekle kalmaz, aynı zamanda bu türlerin veritabanı türleriyle de eşleştirilmesi önemlidir:

resim açıklamasını buraya girin

resim açıklamasını buraya girin


Kaynak eklendi - Rails 4 ile Çevik Web Geliştirme


1
Eğer bunu hissediyorsanız, bu tabloda json türünü görmek isterdim
Freedom_Ben

2
İhtiyacınız NATIVE_DATABASE_TYPESolan adaptörü her zaman kontrol edebilirsiniz - github.com/rails/rails/blob/master/activerecord/lib/…
gotqn

Kılavuzlar üzerinde bir nokta veya zamanla bu şeyler için tek bir gerçek kaynağı var mı?
Hugo

81

Bu listeye istediğiniz zaman (İnternet erişiminiz olmasa bile) aşağıdaki yollardan ulaşabilirsiniz:

rails generate model -h

5

Rails4, Postgres için bazı ek veri tiplerine sahiptir.

Örneğin, railscast # 400 bunlardan ikisini adlandırır:

Rails 4, Postgres'te yerel veri türleri için desteğe sahiptir ve burada çok daha fazlası desteklense de, bunlardan ikisini göstereceğiz: dizi ve hstore. Dizileri dize türü bir sütunda depolayabilir ve hstore için türü belirtebiliriz.

Ayrıca cidr, inet ve macaddr kullanabilirsiniz. Daha fazla bilgi için:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.