2015-08-12 13 views
7

Sto sviluppando un'app Web che utilizza rails 4 per la prima volta. Sto facendo tutte le mie associazioni di modelli bidirezionali e usando inverse_of ovunque sia permesso.binari 4 Quando è richiesto "inverse_of"?

Dalla lettura della documentazione, ho sviluppato l'impressione che questa sia probabilmente la migliore pratica, ma non è mai stata spiegata chiaramente ovunque.

Apprezzerei qualsiasi consiglio generale al riguardo da parte degli sviluppatori di guide esperte. Spero che la domanda non sia troppo vaga per avere valore qui.

Grazie!

Aggiornamento: Oltre ai nomi non standard, non ci sembrano essere due principali ulteriori casi in cui è necessario impostare in modo esplicito inverse_of:

  1. per INVALID_AUTOMATIC_INVERSE_OPTIONS (http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection)
  2. se si sta accettando attributi nidificati - Questo perché l'oggetto genitore non è ancora stato salvato e quindi non ha un id. Vedi http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations

risposta

3

In genere è consigliabile impostare gli invers. La buona notizia è che questo è gestito automaticamente nella maggior parte dei casi. In genere, è necessario impostare in modo esplicito gli invers per associazioni con nomi non standard. Puoi scoprire molto di più nel official documentation.

+0

Grazie. Trovo che ho ancora incontrato il problema descritto qui: http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations sotto il titolo _Creating un oggetto e i suoi figli via accept_nested_attributes_for in a: has_many association._ Trovo che sia più semplice impostare gli invers per ogni associazione e in questo modo non mi devo preoccupare se funzionerà o meno per un determinato caso .. –

+4

@Nesteddoll Più facile a breve termine, forse. Gestisco letteralmente centinaia di applicazioni Rails di produzione e posso dirvi con certezza che sporcare la vostra applicazione con codice non necessario che non comprendete diventerà rapidamente un incubo di manutenzione. Sfida te stesso per essere migliore, non aggiungere codice aggiuntivo alla tua app che non ti serve e non aggiungere codice che non capisci. Il tuo sé futuro ti ringrazierà. –

+0

grazie. Apprezzo ciò che stai dicendo - e guarderò inverso_di più in dettaglio. –

Problemi correlati