man.managements mi restituisce un array giusto?
Essendo un array presumo possa utilizzare tutti i metodi validi per un
array.
Per la classe Array non e’ previsto il metodo “where”, e allora perche’
man.managements.where(:company_id => “101”) funziona?
no
Ti restituisce un ActiveRecord::Relation.
Finch continui a chimare metodi di questa classe, non succede niente,
ma quando chiamo qualche metodo di array (o un banale to_s) avviene il
concreto fetch dei dati e le operazioni seguenti avvengono sull’array.
Essendo un array presumo possa utilizzare tutti i metodi validi per un array.
probbilmente ti ha fregato irb che causa il fetch dei dati. Prova
man.managements.class
Per la classe Array non e’ previsto il metodo “where”, e allora perche’
man.managements.where(:company_id => “101”) funziona?
Che equivale a dire: se uso il metodo “class” come definito in
object (quello usato in tutti gli oggetti “normali”) allora questo
oggetto “magico” di ActiveRecord mi dice la verit, e non un Array.
Semplicemente, il metodo #class, come tanti altri truccato per farlo
funzionare come un array.
Per conferma,
man.managements.ancestors
dovrebbe darti una quarantina di oggetti (58 da me),
tra cui puoi vedere che non c’ Array, mentre
[].ancestors
ti da un errore e
[].class.ancestors
dovrebbe dartene una decina (14 da me) tra cui ovviamente il primo
Array