Domanda

Ho costruito un auditlog Rail 3 con l'aiuto di alcuni plugin, che archiviano i dati in una tabella di auditlog con i seguenti campi per l'identificazione (FeedEd_id, FeedEd_Type)

Quindi, nel mio caso, ho un fotoalbo che ha foto.

class PhotoAlbum < ActiveRecord::Base
has_many :photos, :dependent => :destroy

Quando elimino un fotoalbum (id = 2) funziona molto bene per eliminare tutte le foto associate, ma non elimina gli elementi dall'auditlog che sono così: (feed_id = 2, feed_type = photoalbum)

Dato che la tabella di auditlog non ha una colonna "photo_album_id" e non può, esiste un modo per impostare un destante dipendente con i binari per eliminare tutti gli articoli associati in Auditlog quando un fotoalbum viene eliminato?

Grazie, so che questo è un po 'più complicato della maggior parte. Grazie per averlo letto!

È stato utile?

Soluzione

Penso che quello che stai cercando sia la combinazione di

belongs_to :feeded, :polymorphic => true

nella tua classe di registro di audit e

has_many :logs, :as => :feeded, :dependent => :destroy

Nella tua classe di fotoalbum.

Se non si dispone di una classe per rappresentare il tuo registro di audit, dovresti essere in grado di aggiungere il belongs_to alla classe esistente (forse nei tuoi plugin?).

Non sono sicuro al 100% di: AS =>: opzione alimentata, dovrai nominare quel simbolo correttamente e non sono sicuro di cosa si aspetterà Activever belongs_to La relazione cercherà FeedEd_id e FeedEd_Type, quindi quando l'oggetto "genitore" è un fotoalbum si unirà correttamente photo_album.id = audit_logs.feeded_id AND audit_logs.feeded_type = 'PhotoAlbum'. Poiché ciò non richiede alcuna modifica al database, tutto il codice esistente dovrebbe continuare a funzionare.

Puoi leggere su Opzioni per le associazioni qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top