189 votes

Existe-t-il une documentation pour les types de colonne Rails ?

Je suis à la recherche de plus que le simple type d'inscription qui se trouve sur cette page:

:primary_key, :chaîne de caractères :texte :integer :float :décimal, :datetime :horodatage, :temps, :date, :binaire :boolean

Mais est-il une documentation qui en fait définit ces champs?

Plus précisément:

  • Quelle est la différence entre :string et :text?
  • Entre :float et :decimal?
  • Quelles sont les caractéristiques distinctives de l' :time, :timestamp, et :datetime?

Sont les nuances de ces types documenté nulle part?

EDIT: Points de DB-plate-forme implémentations sont pas à la question, je suis en train de demander. Si, par exemple, :datetime n'a pas de sens dans les Rails de la documentation, alors que dois-db-adaptateur-auteurs vont par lors du choix d'un correspondant de la colonne type?

406voto

aguazales Points 886

Lignes directrices construit à partir de l'expérience personnelle:

  • Chaîne de caractères:
    • Limité à 255 caractères (en fonction du SGBD)
    • Utilisation pour les courts champs de texte (noms, e-mails, etc)
  • Texte:
    • Longueur illimitée
    • Utilisation pour des commentaires, des articles de blog, etc. Règle générale: si il est capturé par textarea, utiliser du Texte. Pour l'entrée à l'aide de textfields, utilisez de la ficelle.
  • Entier
    • Les nombres entiers
  • Float:
    • Les nombres décimaux stockées avec précision en virgule flottante
    • La précision est fixe, ce qui peut être problématique pour certains calculs; en général rien de bon pour les opérations mathématiques inexactes en raison de l'arrondissement.
  • Virgule:
    • Les nombres décimaux stockées avec précision qui varie en fonction de ce qui est nécessaire par vos calculs; utilisez-les pour les mathématiques, qui doit être précise
    • Voir ce post pour avoir des exemples et une explication approfondie sur les différences entre les chars et les décimales.
  • Boolean
    • Utiliser pour stocker vrai/faux attributs (c'est à dire des choses qui n'ont que deux états, comme on/off)
  • :primary_key
    • Ce type de données est un espace réservé que les Rails se traduit par ce que la clé primaire de type de données de votre base de données de choix implique (c - serial primary key dans postgreSQL). Son utilisation est un peu compliquée et n'est pas recommandé.
    • L'utilisation modèle et la migration des contraintes (comme validates_uniqueness_of et add_index avec l' :unique => true option) au lieu de simuler la clé primaire de la fonctionnalité sur l'un de vos propres champs.
  • Date:
    • Ne stocke qu'une date (année, mois, jour)
  • Temps:
    • Ne stocke qu'une heure (heures, minutes, secondes)
  • DateTime:
    • Magasins à la fois la date et l'heure
  • Timestamp
    • Magasins à la fois la date et l'heure
    • Note: Pour les fins de Rails de, les deux Timestamp et DateTime dire la même chose (utiliser soit le type de stocker à la fois la date et l'heure). Pour le TL;DR description de la raison, les deux existent, lire le paragraphe en bas.

Ce sont les types sur lesquels la confusion existe souvent; j'espère que cette aide. Je ne sais vraiment pas pourquoi il n'y a pas de documentation officielle sur ces. Aussi, j'imagine que ces adaptateurs base de données que vous citez ont été écrits par la même personne qui a écrit Rails, de sorte qu'ils n'avait certainement pas besoin de toute la documentation d'aller quand ils ont écrit les cartes. Espérons que cette aide!

Remarque: la présence de deux :DateTime et :Timestamp, de ce que je peux trouver, est inclus par Rails surtout pour la compatibilité avec les systèmes de base de données. Par exemple, MySQL TIMESTAMP type de données est stockée comme un timestamp unix. Sa gamme va de 1970 à 2038, et le temps est stocké comme le nombre de secondes qui se sont écoulées depuis la dernière époque, qui est censé être la norme, mais dans la pratique peut différer d'un système à l'autre. Reconnaissant que le temps relatif n'était pas une bonne chose à avoir dans les bases de données, MySQL, a ensuite présenté le DATETIME type de données, qui stocke tous les chiffres dans l'année, le mois, le jour, l'heure, la minute et la seconde, au prix d'une augmentation de la taille. L' TIMESTAMP type de données a été conservé pour la compatibilité descendante. D'autres systèmes de base de données est passé par des évolutions similaires. Rails reconnu que plusieurs standards existent, et les interfaces fournies à la fois. Cependant, les Rails ActiveRecord par défaut les deux :Timestamp et :DateTime UTC dates stockées dans MySql DATETIME, de sorte qu'il ne fait aucune différence fonctionnelle de Rails de programmeurs. Il en existe, afin que les utilisateurs qui le souhaitent de différencier les deux peuvent le faire. (Pour une explication plus approfondie, voir cette SORTE de réponse).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X