rails generate modeのparentオプションを調べてみたヘ(^o^)ノ
オブジェクト指向か?と言われると微妙なとこです(;^ω^)
前にこんなモデル設計しました
userには共通項目があって、customer、employeeそれぞれの項目をもっています。
このプロジェクトでは、それぞれのテーブルをリレーションして実装しました
ふりかえって、parentオプションを使ってみます
userモデル typeカラムを追加
$ rails g model User first_name:string last_name:string \
email:string company:string unit:string type:string
customerモデル
$ rails g model customer --parent user
employeeモデル
$ rails g model employee --parent user
userモデルはこんなの
class User < ActiveRecord::Base
end
customerモデルはこんなの
class Customer < User
end
employeeモデルはこんなの
class Employee < User
end
それぞれuserモデルを継承しています
では、employeeモデルにバリデーションを設定しましょう
class Employee < User
validates :working_arrangements,
presence: true
end
バリデーションの確認してみましょう
コールバックされましたヘ(^o^)ノ
customerモデルはどうでしょう?
saveできましたねー
userテーブル一つで、各モデルで振る舞いを変更できました
( ̄(エ) ̄)彡☆