2008-12-04 7 views
4

Supposons que vous implémentiez une base de données de publication et que vous créiez des migrations pour représenter différentes publications. Chaque publication a une "année" associée.Vous représentez une année avec RoR?

t.column :year, ???

Est-ce que cette année soit mieux représenté comme un entier, la date ou datetime?

Répondre

7

Je vous conseille d'aller juste avec Rails conventions et faire un Date type de données. De cette façon, si vous avez besoin le mois et le jour, vous pouvez le récupérer. De plus, il est simple à faire:

YourModel.date.year # => "1999" 
0

Eh bien, si vous vous souciez seulement du année, un nombre entier fera juste juste. Si vous n'êtes pas certain que vous n'aurez jamais besoin de mois et de jour, puis de date, et si vous avez aussi besoin de l'heure/minute/seconde, puis de l'heure, mais si vous avez besoin d'une date, ne l'appelez pas année :-)

9

Je suggère d'utiliser un nombre entier. Les deux Date et DateTime ont plus de précision que vous ne le souhaitez, ce qui pourrait être trompeur. Même si vous les initialisez avec une année seulement, ils stockent un mois et un jour par défaut (1er janvier). Par exemple, si vous avez utilisé Date, votre sortie devrait ressembler à ceci:

>> m = YourModel.create(:year => '2008') 

>> m.year.to_s 
=> "2008-01-01" 

Si vous utilisez entier vous obtenez ce que vous attendez:

>> m = YourModel.create(:year => '2008') 

>> m.year.to_s 
=> "2008" 
+1

Mais vous pouvez utiliser des aides au format simple pour afficher l'année seulement. De plus, vous recevez des aides du module Date pour les comparaisons et autres. Et si vous avez besoin de faire un jour de magasin/mois, cela ne nécessitera pas de modification majeure du schéma. – mwilliams

+1

Je ne sais pas qui vous a voté, mais je vous vote, Utiliser un nombre entier est excellent si vous avez besoin seulement de l'année. Si vous voulez plus de détails, utilisez Date. C'est tout. Bon appel Gordon. –

Questions connexes