Rails: 日付や時刻のカラム名を命名規則に合わせよう(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

Rails: 日付や時刻のカラム名を命名規則に合わせよう(翻訳)

Railsでは、ActiveRecordモデルで使われるupdated_atcreated_atというマネージドのタイムスタンプがデフォルトで使えます。

しかし、さまざまなアプリのschema.rbやマイグレーションを調べてみると、モデルで何とか_dateのようなフィールド名をよく見かけます。

次のように書かないこと

データベースカラム名にdatetimeという語を含める:

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

理由

変数名にtimedateという語を追加するのは冗長であり、コードがうるさく見えます。文字列変数にfirst_name_stringという名前を付けないのと同じです。

Railsの慣習では、due_onのように書くことで日付を期待していることが伝わります。このように、データベースに保存されているデータを扱うコードを読む人に、どのようなデータが期待されているかという意図を即座に伝えることができます。

私は、コードが読みやすくなるのであれば、_untilのように書くこともあります。

個人的には、命名の制約がある分適切な名前を考えるのが面倒ではありますが。

関連記事

Railsのdefault_scopeは使うな、絶対(翻訳)

Railsのsecret_key_baseを理解する(翻訳)

Rails: Form ObjectとVirtusを使って属性をサニタイズする(翻訳)

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ