Ich habe eine Klasse User
und ein paar Klassen für Benutzerrollen genannt (zB Admin
, Contributor
, Member
), die bilden die User
Klasse erben:Mehrere rollenbasierte Klassen von User-Klasse geerbt - Rails 4
class Admin < User; end
nach dem STI Prinzip sind roles
als jsonb
in der Benutzer-Tabelle gespeichert, wie so:
t.jsonb :roles, default: {
'admin': false,
'contributor': false,
'member': true
}
Ist es möglich, die entsprechende Unterklasse t einstellen o eine Instanz eines User
für die entsprechende Rolle. Mit anderen Worten, so etwas wie:
u = User.create(...)
u.class #<= returns 'User'
u.grant_role(admin)
u.class #<= should return 'Admin'
Ich denke einen before_save
Rückruf verwenden, so dass jedes Mal User
Instanz instanziiert oder aktualisiert wird, wird eine entsprechende Klasse ausgewählt. Bin ich auf dem richtigen Weg?