11

voglio fare un'impalcatura come questo:Ruby on Rails convenzione per la denominazione data/campi ora

rails generate scaffold Job started_at:datetime completed_at:datetime price:decimal paid_at:datetime estimated_completion_at:datetime comment:text 

ho aggiunto "_at" per i campi datetime perché sembrava essere la convenzione come rotaie timestamp i campi sono "_at" per datetime o "_on" per la data. Ma questa è davvero una convenzione? Va bene se ho solo "pagato" invece di "paid_at" e "completato" invece di "completed_at"?

Voglio davvero farlo fin dall'inizio. Ho programmato in C# per anni ma sono nuovo per ruby ​​su rail. Mi piacciono tutte le convenzioni e voglio essere sicuro che sto facendo questo in modo corretto.

risposta

26

Non conosco alcuna convenzione specifica per i binari e non ha molta importanza in quanto non vi è nulla nelle guide che escludono i campi datetime. La convenzione con cui sono sempre andato è suffisso di colonne datetime con _at e colonne di date con _on. Sembrava sempre più naturale dire in un giorno e in una volta.

+0

Non infrange nulla se non lo segui, ma questa è la convenzione di denominazione. – Steve

+0

Sono d'accordo con questa convenzione poiché indicano chiaramente un tempo/datetime rispetto a una data semplice. Avere un campo come Employee.hired_at suona ridicolo rispetto a Employee.hired_on sembra perfetto. Come con molte cose, non importa molto quello che fai finché sei coerente. – mroach

1

Probabilmente non è una convenzione in Rails ma in realtà ha senso aggiungere le colonne _at alle colonne di fine data/datetime. Rispetto al solo paid, paid_at ti dà la nozione che stai lavorando con un oggetto data/datetime mentre paid può anche essere un booleano o una stringa che spiega lo stato del pagamento. Quindi immagino che questo non si limiti solo a Rails.

3

In realtà, non v'è una convenzione in Rails per i nomi di due colonne timestamp specifici: created_at e updated_at hanno comportamenti speciali. Da Active Record Basics — Ruby on Rails Guides; 2.2 Schema Conventions

Ci sono anche alcuni nomi di colonna opzionali che consentono di aggiungere funzionalità aggiuntive per le istanze record attivo:

  • created_at - viene automaticamente impostato per la data e l'ora in cui viene creato il record corrente.
  • updated_at - Viene automaticamente impostato sulla data e l'ora correnti ogni volta che il record viene aggiornato.
  • ...

Non v'è alcuna menzione in quella pagina di nomi di colonne che terminano in "_ON".

3

Come si denominano le colonne di data e ora non è una convenzione ufficialmente dichiarata e non influisce sul modo in cui il codice funziona. Tuttavia, se vuoi andare su "il modo Rails", probabilmente dovresti seguire le convenzioni generalmente accettate nella community dei binari.

  • Prima di tutto, c'è un a community-driven Ruby on Rails style guide, ma non contiene alcun convenzioni di denominazione data colonna.

  • Un suggerimento sono le colonne di timestamp del record attivo, come created_at come @sierrasdetandil indicato nella risposta.

  • Un altro modo per capire quali sono alcune convenzioni è guardare le guide in stile Rails dei famosi negozi Rails.Per esempio thoughtbot state in their style guide:

  • colonne Data Nome con _on suffissi.
  • Nome colonne datetime con suffissi _at.
  • Colonne dei nomi temporali (che si riferiscono a un'ora del giorno senza data) con suffissi _time.

Questo ti aiuterà a trovare i buoni nomi per le colonne e prevenire la confusione per gli altri sviluppatori. Penso che questa sia una buona convenzione da seguire, e potresti farlo anche tu, a patto di non avere un motivo valido per nominare le tue colonne in modo diverso.