Domanda

Continuiamo a visualizzare avvisi come i seguenti quando eseguiamo le nostre specifiche:

  

L'ID oggetto # sarà deprecato; usa Object # object_id

Il codice in questione sta accedendo all'ID di un modello ActiveRecord (che è un attributo sulla tabella, ovviamente, piuttosto che l'ID dell'istanza dell'oggetto nella VM Ruby).

Qualcuno sa come disattivare questi avvisi particolari o in qualche modo evitarli?

È stato utile?

Soluzione

Suppongo che stai facendo beffe / stub (perché hai menzionato le specifiche).

Nel mio caso, ho riscontrato questi avvisi quando stub un oggetto ActiveRecord e accedo al suo attributo ID.

Nei casi in cui prevedi di accedere all'ID del tuo oggetto ActiveRecord, ti consiglio di effettuare le seguenti operazioni:

 mock("MyActiveRecordObject", :id => 1001)

Altri suggerimenti

Prova a utilizzare [: id] anziché .id

Quando un oggetto discende da ActiveRecord :: Base , una chiamata a id va al metodo id di AR :: B anziché al deprecato su Object .

Quell'avvertimento di solito significa che uno dei miei oggetti non è quello che penso.

Il tuo oggetto non è in realtà un oggetto AR, di solito indica che il recupero di alcuni dati non è riuscito ( Table.find_by_name ('nome inesistente') restituirà nil ). Se tutto ciò che vuoi fare è disattivare gli avvisi visibili, puoi disattivare whiny_nils nella tua configurazione, altrimenti esegui un test is_a? prima di provare ad accedere agli attributi dell'oggetto e gestire il caso di errore con garbo.

L'avviso ID oggetto # si verifica solo su normali classi ruby ??come NilClass. ActiveRecord :: Base ignora l'oggetto # id

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