Wir haben eine Benutzer-Tabelle. Benutzer haben viele Einträge.Octopus Gem dynamisch wählen Sie Shard für ein zugehöriges Modell basierend auf shard_id
Wir möchten das Assoziationsmodell Listing so shard, dass alle Benutzer auf Datenbank "Master" Shard bleiben. Benutzer erhalten eine shard_id-Spalte und Listen werden in verschiedene Datenbanken "shard1", "shard2" aufgeteilt.
Wir können unseren Code erweitern die Objekte auf der richtigen Scherbe, um die using
Methode:
Listing.where(user: current_user).using(current_user.shard_id)
jedoch, dass eine große Codeänderung ist. Im Idealfall wollen wir unsere bestehenden Assoziations Aussagen wie diese nur halten mit:
current_user.listings
Und haben sie automatisch current_user.shard_id
unter der Haube verwenden.
Irgendwelche Vorschläge, dies zu tun?
zu bekommen, das funktioniert nur, wenn current_user und Angebote auf dem gleichen Shard sind. Es funktioniert nicht, wenn sich der Benutzer im Master-Shard befindet und Listing auf Shard1 steht. current_user wird davon ausgehen, dass sich die Verknüpfung im selben Shard befindet wie der current_user. – Homan