-
Notifications
You must be signed in to change notification settings - Fork 0
suginoy/Single-Table-Inheritance-and-Controller-Namespace-Sample
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
== Rails 3.1で単一テーブル継承とnamespaceを使ったサンプル Petモデルを継承したCat::CatモデルとDog::DogモデルのCRUDアプリケーションのサンプル === 実装をためしてみて気づいた点など 1.宣言上は、Cat/DogクラスがPetクラスを継承しているが、属性の数から考えると、PetがCat/Dogを多重継承しているようなイメージで気持ち悪い。 2.type属性はPet.new(params[:pet])に含まれない。直接設定しなければならない。validates :incudeからnilを除外するとPetのインスタンスを永続化できないようにできる。 2.モデルに永続化したい属性を追加するには、petsテーブルへの追加になる。NOT NULL制約等をテーブルに追加すると、 継承したクラスすべてが影響を受けるため、子クラスのみの制約は、アプリケーションレイヤでのみ実装する。 validatesが親クラスと子クラスに散らばる可能性があるので、 3.xxx_pathヘルパーメソッドが名前空間付きになるので、やや面倒。 4.表示を"Cat::Cat"ではなく、"Cat"のようにしたければ、application_helperに相互変換のメソッドを用意する。
About
単一テーブル継承と名前空間付きコントローラを使ったサンプル
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published