ActiveRecord では、マイグレーションにて timestamps で作成した created_at, updated_at には自動で日時を設定してくれる。
が、テーブルの共通項目は時間だけではないことが多々。
削除フラグや作成者、更新者なども格納したい場合がある。
削除処理に関しても、削除フラグを立てる論理削除をしたい場合はメソッドだけで済ませたいものだ。
コントローラは ActionController::Base を継承した ApplicationController クラスがあるので、共通処理はここに記述することができる。
view に関しても application.html.erb を作っておけば、すべてに適応させることができる。
が、しかし model に関してはその都度 ActiveRecord::Base を継承するので、共通処理を記述する場所がない。(ActiveRecord::Base をいじるのはイヤだ)
じゃあ、継承したベースクラスを作ればいいと思い、ApplicationRecord < ActiveRecord::Base を作ってみた。
しかし、失敗。
application_records というテーブルを探しに行き、「ねーよ」と行って怒られてしまう。
継承がダメなら mixin だ、ということで ApplicationRecord モジュールを作る。
こんな感じ
model のクラスはこんな感じになる
もっとスマートなやり方があるように思えてならない。
そもそも、このやり方自体 OK なものなんだろうか?