ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  420  : 記事  0  : コメント  9718  : トラックバック  76

ニュース

さて、今年は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

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 なものなんだろうか?
投稿日時 : 2008年6月17日 0:51

コメント

# re: ActiveRecord における共通処理 2008/06/17 10:52 DELI
削除フラグに関してはこれでは駄目ですか?http://wiki.rubyonrails.org/rails/pages/Acts+As+Paranoid+Plugin

更新者の方はこれで希望を満たせるでしょうか。
http://delynnberry.com/projects/userstamp/


自分で実装しても良いんですけど、せっかくなので既存の資源を有効活用した方が・・・・。

# re: ActiveRecord における共通処理 2008/06/17 21:44 THREE-ONE
情報ありがとうございます。
ゆっくり試してみようと思います。
userstamp はマイグレーションも簡潔にできるのでよさげですね。
まだまだ、有名どころ以外のプラグインなどは全然調査が及んでないです。
OSSだとこのあたりが、大変でもあり楽しいところでもありますね。

# re: ActiveRecord における共通処理 2008/06/24 18:15 かずき
邪悪にActiveRecord::Base自体を拡張してしまうとか…
module ActiveRecord
class Base
# パラダイス
end
end


Post Feedback

タイトル
名前
Url:
コメント: