Ich versuche, die folgenden Anforderungen mit CanCan zu erfüllen:Wie kann ich Datensätze in CanCan basierend auf einer Assoziationswahrheit begrenzen?
Wenn ein Deal zugeordnet ist 1-viele Netzwerke, kann der Benutzer die Transaktion lesen, wenn er/sie ein Mitglied einer der zugeordneten Netze .
Wenn ein Geschäft keinem Netzwerk zugewiesen ist, kann es von jedem registrierten Benutzer unabhängig von seiner Netzwerkzugehörigkeit angezeigt werden.
Wenn ein Deal keinem Netzwerk zugewiesen ist, der Deal jedoch als member_only = true markiert ist, kann der Benutzer den Deal lesen, wenn er Mitglied eines Netzwerks ist.Wenn ein Geschäft nicht zu einem Netzwerk und markiert member_only = false zugeordnet ist, jeder registrierte Benutzer kann den Deal lesen.Gäste (dh kein Benutzer)
alle möglichen Angebote nicht lesen kann
Ich glaube, ich habe 2-4 mit dem abgedeckte folgend:
if current_user.persisted?
can :read, Deal, current_user.networks.empty? ? { member_only: false } : {}
end
Aber ich bin nicht sicher, wie um Geschäfte, die einem Netzwerk zugewiesen sind, weiter einzuschränken. Ist das mit CanCan möglich? Wenn ja, Vorschläge wie? Vielen Dank.