11

我要作出這樣的支架:Ruby on Rails的約定命名日期/時間字段

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

我已經添加了「_at」於日期字段,因爲這似乎是慣例爲軌道時間戳字段可以是日期時間的「_at」或日期的「_on」。但這實際上是一個慣例嗎?如果我只是「付費」而不是「paid_at」和「完成」而不是「completed_at」,那麼可以嗎?

我真的想從一開始就得到這個權利。我一直在C#編程多年,但我是Ruby on Rails的新手。我喜歡所有的慣例,並且我想確保我以正確的'軌道方式'來做這件事。

回答

26

我不知道任何具體的軌道約定,它並不重要,因爲在軌道上沒有任何東西關閉日期時間字段。我一直使用的約定是帶有_at的後綴datetime列和具有_on的日期列。在一天和一段時間內說出來似乎更自然。

+0

它不會破壞任何東西,如果你不遵循它,但是這是命名約定。 – Steve 2014-11-22 04:11:04

+0

我本公約同意,因爲他們很清楚地表明一個時間/日期與平原日期。擁有像Employee.hired_at場聽起來很可笑與Employee.hired_on聽起來很完美。就像許多事情一樣,只要你一致,你做什麼並不重要。 – mroach 2015-01-28 02:48:01

1

它可能不是Rails中的約定,但在date/datetime列的末尾添加_at實際上是有意義的。與paid相比,paid_at爲您提供了使用日期/日期時間對象的概念,而paid也可以是解釋付款狀態的布爾值或字符串。所以我猜這不僅限於Rails。

3

其實,有了兩個特殊時間戳列的名稱在Rails的一個約定:created_atupdated_at有特殊的行爲。從 Active Record Basics — Ruby on Rails Guides; 2.2 Schema Conventions

也有一些可選的列名,將增加額外的功能,Active Record的實例:

  • created_at - 自動被設置爲當前日期和首次創建了創紀錄的時間。
  • updated_at - 每當記錄更新時自動設置爲當前日期和時間。
  • ...

有在 「_ON」 結尾的列名的該頁面沒有提及。

3

如何命名日期和時間列不是官方聲明的約定,並且不會影響代碼的工作方式。但是,如果你想要使用Rails的方式«你應該遵循rails社區普遍接受的約定。

  • 首先,有一個a community-driven Ruby on Rails style guide,但它不包含任何日期列命名約定。

  • 一個提示是活動記錄時間戳列,就像@sierrasdetandil在他們的答案中指出的created_at一樣。

  • 瞭解一些約定的另一種方法是查看流行的Rails商店的Rails風格指南。例如thoughtbot state in their style guide

  • _on後綴名稱日期列。
  • _at後綴名稱日期時間列。
  • 名稱時間列(指一天中沒有日期的時間)與_time後綴。

這將幫助您找到適合您的列好名字並阻止其他開發者的困惑。我覺得這是遵循一個好習慣,你可能也一樣,只要你沒有一個令人信服的理由,不同的命名列。