私はUser
というクラスとUser
クラスを形成継承するユーザの役割(例えばAdmin
、Contributor
、Member
)のためのいくつかのクラスを持っている:複数の役割ベースのクラス - Railsの4
class Admin < User; end
STIの原則に続き、roles
は、そのようなユーザーテーブルにjsonb
として格納されます。
t.jsonb :roles, default: {
'admin': false,
'contributor': false,
'member': true
}
はそれが適切なサブクラスtを設定することが可能ですo対応する役割のためのUser
のインスタンス。言い換えれば、ような何か:
u = User.create(...)
u.class #<= returns 'User'
u.grant_role(admin)
u.class #<= should return 'Admin'
を私は毎回User
インスタンスがインスタンス化または更新されるように、適切なクラスが選択されているbefore_save
コールバックを使用して考えています。正しい軌道にいるのですか?