Railsでシステムカラムを用意する


INDEX PAGE


Railsでシステムカラムを用意する


業務系のシステムでは、システムカラムなるものを用意している場合が多いです。
良く見られるのはこんなカラム。


・作成日時:レコードを作製した日時
・作成ユーザーID:レコードを作製したシステム上のユーザーID
・作成プログラムID:レコードを作製したプログラムID
・作成IPアドレス:レコードを作製したクライアントのIPアドレス
・作成MACアドレス:レコードを作製したクライアントのMACアドレス
・更新日時:レコードを更新した日時
・更新ユーザーID:レコードを更新したシステム上のユーザーID
・更新プログラムID:レコードを更新したプログラムID
・更新IPアドレス:レコードを更新したクライアントのIPアドレス
・更新MACアドレス:レコードを更新したクライアントのMACアドレス
・削除日時:レコードを削除した日時
・削除ユーザーID:レコードを削除したシステム上のユーザーID
・削除プログラムID:レコードを削除したプログラムID
・削除IPアドレス:レコードを削除したクライアントのIPアドレス
・削除MACアドレス:レコードを削除したクライアントのMACアドレス
・削除フラグ:レコードが論理削除状態にあるかどうかを表すフラグ


もちろん、こんなに沢山あるとわけがわからなくなるし
データ量も多くなるので、必要に応じてまとめたり削除したりします。
なお、削除XXXというのは、論理削除を行う場合に必要なカラムです。
物理削除を行うシステムでは必要ないです。


さて、Railsではこの一部のカラムについては
自動で設定してくれる機能を持っています。


作成日付:created_at
更新日付:created_at
作成日:created_on
更新日:created_on


これらのカラムについては
テーブルに作成しておくとActiveRecordの機能として
データを設定してくれます。



また、論理削除機能を実装するような場合には
論理削除用のプラグインがでているのでこれを使えばよいです。
acts_as_paranoidというプラグインが有名なようです。
下記のブログが参考になりました。
http://d.hatena.ne.jp/fujisan3776/20080912/1221234453


この場合も、プラグインを導入して
対応するテーブルに


削除日付:deleted_at


というカラムを追加して
モデルクラスをちょっといじるだけで対応できるようです。


上で書いたような、これ以外のシステムカラムについては
個別に実装する必要がありますが、
かなりすっきりシステムカラムを実装することができます。


また、後からシステムカラムを追加したいという場合要件にも対応可能となります。



INDEX PAGE