Kann mir jemand helfen, meine Assoziationen zu korrigieren?
Ich habe folgende Modelle:
%Vor%Anforderungen:
%Vor%Ich habe bereits einige Assoziationen erstellt, aber ich glaube, es ist nicht 100% korrekt oder es gibt einen einfacheren Weg es zu tun.
Kann mir jemand einen korrekten Weg vorschlagen?
Sie verwechseln Modelle mit Autorisierung.
Sie sollten CanCan für die rollenbasierte Autorisierung auschecken. Zum Beispiel brauchen Sie Ihr Entwicklermodell nicht, da es nur ein Benutzer mit einer anderen Rolle / Berechtigungen ist.
Bearbeiten: Die "rollenbasierte Authentifizierung" wurde in "rollenbasierte Autorisierung" geändert. Wie der folgende Kommentar auf den Unterschied zwischen Authentifizierung und Autorisierung hinweist.
Ich denke, das ist, was Sie wollen, soweit Ihr Modell funktioniert. Sie können ein Join-Modell verwenden, um Ihre Anwendungsberechtigungen zu verwalten, und Rails STI verwenden, um zu verwalten, was jeder Benutzertyp tun kann, ob er sich entwickelt oder nicht.
user.rb
%Vor%comment.rb
%Vor%rating.rb
%Vor%user_comment.rb
%Vor%user_rating.rb
%Vor%normal_user.rb (STI)
%Vor%developer.rb (STI)
%Vor%app.rb
%Vor%permission.rb
%Vor%app_permission.rb
%Vor%Ich stimme @Mark zu, verwende keine STI. Der bessere Weg wird, wie von @Chris Barretto vorgeschlagen, mit Ausnahme von STI implementiert und CanCan für die rollenbasierte Authentifizierung verwendet. Die Änderung für das Benutzermodell lautet:
%Vor%Und es wird ein anderes Modell für Role geben:
%Vor%Wenn Sie Edelsteine wie Devise für die Authentifizierung verwenden, ist das sehr einfach.
Tags und Links ruby ruby-on-rails activerecord