Dato che devi implementare un feed di notizie come quello visto nei social network, ex facebook. Attualmente sto usando una classe News che ha un'associazione polimorfica che può essere di qualsiasi tipo come Immagine, Commento, Amicizia, GruppoMembership, ecc. Ogni volta che viene creato un Oggetto, come viene creato anche Notizie. Funziona bene con AR (ActiveRecords), ma mi trovo nei guai quando passerei a DM (DataMapper) o Sequel in quanto entrambi non supportano nativamente le associazioni polimorfiche e scoraggiano il suo utilizzo.come evitare le associazioni polimorfiche
Una soluzione alternativa sarebbe utilizzare una grande clausola SQL con un sacco di UNION per unire tutte le diverse tabelle che dovrebbero essere considerate come notizie. Ma questo ha alcuni inconvenienti, specialmente le prestazioni sarebbero terribili.
Quindi mi chiedo come risolvere senza associazioni polimorfiche ottenendo comunque buone prestazioni e nessun altro inconveniente, come avere la possibilità di aggiungere metadati a una notizia?
Grazie ... questa è una vera semplice ma buona idea :-). Richiede alcune modifiche al modello (restituendo la vera associazione del ref) ma dovrebbe essere ok :) – gucki
Non penso davvero che questa sia la soluzione. In realtà non descrive il concetto di ad es. un 'revisionabile' potenzialmente un 'Business' o un' Person' o un 'Item'. Anche se possiedi ognuno di 'business_id',' person_id', 'item_id' in una tabella' Review' devi trovare il primo campo non nullo tra tutti quelli per sapere veramente a cosa punta la recensione. E i casi in cui una particolare associazione può essere una delle tante cose diverse? – fatuhoku