ActiveRecordでモデル継承
ActiveRecord::Baseのサブクラスになるモデルだが、さらにそれを継承するとどうなるのか?Accountモデルを継承したAdminクラスを考える。
class Account < ActiveRecord::Base has_many :personas, :dependent => :destroy, :order => 'id ASC' has_many :sites, :dependent => :destroy validates_presence_of :login end
class Admin < Account def is_admin? true end end
すると、Adminクラスはadminsテーブルではなくてaccountsテーブルと関連付けされるようだ。あとはAdminクラスに管理者権限を持たせると、管理者モデルが出来ないかな?とCACAnet合宿で話が出た。が、このモデルでうまくやっていけるのか?はもっと議論が必要だ。
ちなみに継承ではなくてModuleにしてMixinすれば、管理者以外にも複数の属性を持ったユーザーが出来そうだ。Ruby on Railsで開発されたプロジェクト管理ソフトウェア「RedMine」では、Moduleでユーザーの属性を実装しているらしい。