概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: Use Rails’ naming conventions for dates & times
- 公開日: 2017/09/29
- 著者: Andy Croll -- フリーランスのRuby開発者です。
Rails: 日付や時刻のカラム名を命名規則に合わせよう(翻訳)
Railsでは、ActiveRecordモデルで使われるupdated_at
とcreated_at
というマネージドのタイムスタンプがデフォルトで使えます。
しかし、さまざまなアプリのschema.rbやマイグレーションを調べてみると、モデルで何とか_date
のようなフィールド名をよく見かけます。
次のように書かないこと
データベースカラム名にdate
やtime
という語を含める:
class NaughtyMigration < ActiveRecord::Migration[5.1]
add_column :users, :logged_in_date, :datetime
add_column :users, :logged_out_time, :date
end
訳注:
:datetime
と:date
は誤りを示すためにわざと入れ替えてあるそうです。
次のように書くこと
時刻にはat
、日付にはon
というサフィックスを追加する:
class AwesomeMigration < ActiveRecord::Migration[5.1]
add_column :users, :logged_in_at, :datetime
add_column :users, :logged_out_on, :date
end
理由
変数名にtime
やdate
という語を追加するのは冗長であり、コードがうるさく見えます。文字列変数にfirst_name_string
という名前を付けないのと同じです。
Railsの慣習では、due_on
のように書くことで日付を期待していることが伝わります。このように、データベースに保存されているデータを扱うコードを読む人に、どのようなデータが期待されているかという意図を即座に伝えることができます。
私は、コードが読みやすくなるのであれば、_until
のように書くこともあります。
個人的には、命名の制約がある分適切な名前を考えるのが面倒ではありますが。