Rails 4: Liste des types de données disponibles


406

Où puis-je trouver une liste des types de données pouvant être utilisés dans Ruby on Rails 4? Tel que

  • text
  • string
  • integer
  • float
  • date

Je continue à en apprendre de nouvelles et j'aimerais avoir une liste à laquelle je pourrais facilement me référer.



1
@MarkThomas: Pas un doublon. Ma question ici est spécifiquement pour Rails 4.
Nicolas Raoul

La réponse acceptée dans cette question est essentiellement la même que votre réponse acceptée. Les deux pointent vers la documentation de Rails 4. En outre, c'est un point discutable car les types de données ActiveRecord ne sont pas passés de Rails 3 à Rails 4.
Mark Thomas

10
Pour ma part, je ne savais pas que les types de données AR ne changeaient pas entre les rails 3 et 4, donc je suis reconnaissant que cette question / réponse soit ici.
Dty

Réponses:


667

Voici tous les types de données Rails 4 (migration ActiveRecord):

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

Source: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
Ce sont les mêmes qu'avec Rails 3 .

Si vous utilisez PostgreSQL, vous pouvez également en profiter:

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

Ils sont stockés sous forme de chaînes si vous exécutez votre application avec une base de données non PostgreSQL.

Edit, 2016-Sep-19:

Il y a beaucoup plus de types de données spécifiques postgres dans Rails 4 et encore plus dans Rails 5.


1
Je pense que ce sont les types de données qui sont pris en charge dans toutes les bases de données. Cependant, comme Peter de Ridder le mentionne, certains types de données comme hstore sont toujours pris en charge.
Althaf Hameez

Question: la documentation postgres ne semble pas avoir textde type de données. Pourtant, les rails peuvent encore le gérer? Que se passe-t-il en arrière-plan?
ahnbizcad

PostgreSQL a un type de données texte. Sous le capot, tous les champs varchar / text sont des tableaux de longueur variable. postgresql.org/docs/9.3/interactive/datatype-character.html
makhan

Je voudrais ajouter que si vous utilisez une base de données non postgres et que votre application schema_format n'est pas définie pour utiliser: sql, alors votre fichier schema.rb ne pourra pas vider la table qui utilise des types comme: json. Le schéma sera toujours sauvegardé pour les tables qui utilisent des types par défaut, mais vous verrez un commentaire pour la table avec des types spéciaux comme "Impossible de sauvegarder la table ...". Regardez ici pour définir le schéma_format .
bpercevic

De plus, ces colonnes auront du type nildans une base de données non postgres. Vous pouvez inspecter le type dans la console avec Model.columns_hash["column_name"].type. Ce ne sont que des choses que j'ai rencontrées lors de l'utilisation: type de colonne json, je peux me tromper et cela peut ne pas arriver à tout le monde mais je pensais que je ferais savoir aux futurs lecteurs en cas de problèmes. Quoi qu'il en soit, +1 pour cette réponse car cela m'a vraiment aidé.
bpercevic

249

Vous pouvez également trouver utile de savoir de manière générale à quoi ces types de données sont utilisés:

Il existe également des références utilisées pour créer des associations. Mais je ne suis pas sûr que ce soit un type de données réel .

Nouveaux types de données Rails 4 disponibles dans PostgreSQL:

  • :hstore- stockage de paires clé / valeur dans une seule valeur (en savoir plus sur ce nouveau type de données )
  • :array- un arrangement de nombres ou de chaînes dans une ligne particulière (en savoir plus à ce sujet et voir des exemples )
  • :cidr_address - utilisé pour les adresses d'hôte IPv4 ou IPv6
  • :inet_address - utilisé pour les adresses d'hôte IPv4 ou IPv6, comme cidr_address mais il accepte également des valeurs avec des bits non nuls à droite du masque de réseau
  • :mac_address - utilisé pour les adresses d'hôte MAC

En savoir plus sur les types de données d'adresse ici et ici .

Voici également le guide officiel des migrations: http://edgeguides.rubyonrails.org/migrations.html


13
Applaudissements. +1 pour la rigueur et l'anticipation de l'utilisation. C'est la mentalité UX ici.
ahnbizcad

5
Réponse absolument formidable - merci beaucoup pour cela. Les liens vers les articles sur les différences ont littéralement sorti les questions de ma bouche.
nlh

3
Pour Postgres il y a en outre un uuidtype qui peut être utilisé comme champ normal comme t.uuid :name... ou comme clé primaire comme create_table :users, id: :uuid do...ou par exemplet.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT

1
Types PostgreSQL supplémentaires pris en charge par Rails répertoriés dans la documentation deActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods l' API pour . Faits saillants comprennent money, json, xml,daterange
Eliot Sykes

1
Oui, uuid a été ajouté pour Postgres, mais il n'est pas renvoyé avec un enregistrement actif create (). Ce problème a-t-il été résolu avec Rails 5?
Martin Sommer

156

Il est important de connaître non seulement les types mais aussi le mappage de ces types avec les types de base de données:

entrez la description de l'image ici

entrez la description de l'image ici


Source ajoutée - Développement Web Agile avec Rails 4


1
Je serais intéressé de voir le type json dans ce tableau, si vous en avez envie
Freedom_Ben

2
Vous pouvez toujours vérifier l' NATIVE_DATABASE_TYPESadaptateur dont vous avez besoin - github.com/rails/rails/blob/master/activerecord/lib/…
gotqn

Y a-t-il une place sur les guides ou une seule source de vérité pour ces choses au fil du temps?
Hugo

81

Vous pouvez accéder à cette liste à tout moment (même si vous n'avez pas accès à Internet) via:

rails generate model -h

5

Rails4 a quelques types de données ajoutés pour Postgres.

Par exemple, railscast # 400 en nomme deux:

Rails 4 prend en charge les types de données natifs dans Postgres et nous en montrerons deux ici, bien que beaucoup plus soient pris en charge: array et hstore. Nous pouvons stocker des tableaux dans une colonne de type chaîne et spécifier le type de hstore.

En outre, vous pouvez également utiliser cidr, inet et macaddr. Pour plus d'informations:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.