概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: 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のように書くこともあります。
個人的には、命名の制約がある分適切な名前を考えるのが面倒ではありますが。