Salut, je suis un débutant dans RoR et avait un peu de mal à générer un modèle particulier.
Je veux créer 2 modèles - Liste et article. La liste contient_de nombreux éléments et l'élément appartient à la liste.
Je veux que le modèle Item ait 3 attributs. Rails g model Item name:string desc:string date:????
1.Quel type de données ajouter pour date:???
2. Dans quel format sera l'attribut date? (mm/jj/aa)?
3.Et quel type de formulaire doit-il avoir?
f.date_field :date
?
Merci d'avance!
1. Quel type de données ajouter pour date:???
Dans vos migrations, vous pouvez utiliser les types suivants pour les colonnes:
:string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean
(extrait du add_column
transformation ici )
Dans votre cas, si vous n'avez pas besoin de stocker l'heure, vous pouvez utiliser date:name_of_your_field
.
2. Dans quel format sera l'attribut date? (mm/jj/aa)?
L'attribut sera stocké sous la forme d'un ActiveSupport::TimeWithZone
, et vous devrez le formater lors de son affichage. Vous pouvez utiliser Time # strftime pour ce faire.
your_attribute.strftime("%m/%d/%Y") #=> "11/19/2007"
3. Et quel type d'entrée de formulaire devrait-il avoir?
Oui, vous pouvez parfaitement utiliser:
f.date_field :date?
Il renverra un text_field
de type "date". Selon la prise en charge du navigateur, un sélecteur de date apparaîtra dans le champ de saisie.
J'espère que ça aide! Bon codage!
Vous pouvez avoir date
ou datetime
selon la documentation. Par conséquent:
Rails g model Item name:string desc:string date:datetime
ou
Rails g model Item name:string desc:string date:date
Mais la meilleure pratique consiste à utiliser DateTime comme une représentation générale du temps.
Bien que je l'appellerais probablement quelque chose de plus descriptif que date
. (Et juste fyi created_at
et updated_at
les colonnes sont déjà créées pour vous.)
Le type est à peu près indépendant du format. Vous pouvez le formater avec strftime
:
%Y%m%d => 20071119 Calendar date (basic)
%F => 2007-11-19 Calendar date (extended)
%Y-%m => 2007-11 Calendar date, reduced accuracy, specific month
%Y => 2007 Calendar date, reduced accuracy, specific year
%C => 20 Calendar date, reduced accuracy, specific century
%Y%j => 2007323 Ordinal date (basic)
%Y-%j => 2007-323 Ordinal date (extended)
%GW%V%u => 2007W471 Week date (basic)
%G-W%V-%u => 2007-W47-1 Week date (extended)
%GW%V => 2007W47 Week date, reduced accuracy, specific week (basic)
%G-W%V => 2007-W47 Week date, reduced accuracy, specific week (extended)
%H%M%S => 083748 Local time (basic)
%T => 08:37:48 Local time (extended)
%H%M => 0837 Local time, reduced accuracy, specific minute (basic)
%H:%M => 08:37 Local time, reduced accuracy, specific minute (extended)
%H => 08 Local time, reduced accuracy, specific hour
%H%M%S,%L => 083748,000 Local time with decimal fraction, comma as decimal sign (basic)
%T,%L => 08:37:48,000 Local time with decimal fraction, comma as decimal sign (extended)
%H%M%S.%L => 083748.000 Local time with decimal fraction, full stop as decimal sign (basic)
%T.%L => 08:37:48.000 Local time with decimal fraction, full stop as decimal sign (extended)
%H%M%S%z => 083748-0600 Local time and the difference from UTC (basic)
%T%:z => 08:37:48-06:00 Local time and the difference from UTC (extended)
%Y%m%dT%H%M%S%z => 20071119T083748-0600 Date and time of day for calendar date (basic)
%FT%T%:z => 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
%Y%jT%H%M%S%z => 2007323T083748-0600 Date and time of day for ordinal date (basic)
%Y-%jT%T%:z => 2007-323T08:37:48-06:00 Date and time of day for ordinal date (extended)
%GW%V%uT%H%M%S%z => 2007W471T083748-0600 Date and time of day for week date (basic)
%G-W%V-%uT%T%:z => 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
%Y%m%dT%H%M => 20071119T0837 Calendar date and local time (basic)
%FT%R => 2007-11-19T08:37 Calendar date and local time (extended)
%Y%jT%H%MZ => 2007323T0837Z Ordinal date and UTC of day (basic)
%Y-%jT%RZ => 2007-323T08:37Z Ordinal date and UTC of day (extended)
%GW%V%uT%H%M%z => 2007W471T0837-0600 Week date and local time and difference from UTC (basic)
%G-W%V-%uT%R%:z => 2007-W47-1T08:37-06:00 Week date and local time and difference from UTC (extended)
Merci à @BWStearns pour cette citation
Enfin en ce qui concerne le champ de saisie: jetez un œil à ces aides de formulaire .
<%= date_field(:user, :born_on) %>
<%= datetime_field(:user, :meeting_time) %>
<%= datetime_local_field(:user, :graduation_day) %>