Se ho: Manager has_many :managements has_many :companies, :through => :managements man=Manager.find(1) 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?
on 2012-05-23 18:06
on 2012-05-23 20:48
On Wed, May 23, 2012 at 6:06 PM, Mauro <mrsanna1@gmail.com> wrote: > Se ho: > > Manager > has_many :managements > has_many :companies, :through => :managements > > man=Manager.find(1) > > man.managements mi restituisce un array giusto? 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? vedi sopra. -- twitter: @riffraff blog (en, it): www.riffraff.info riffraff.blogsome.com work: circleme.com
on 2012-05-25 08:37
2012/5/23 gabriele renzi <rff.rff@gmail.com>: >> man.managements mi restituisce un array giusto? > > no :) > probbilmente ti ha fregato irb che causa il fetch dei dati. Prova > > man.managements.class irb(main):004:0> man.managements.class => Array
on 2012-05-25 12:04
On Fri, May 25, 2012 at 8:36 AM, Mauro <mrsanna1@gmail.com> wrote: > 2012/5/23 gabriele renzi <rff.rff@gmail.com>: >>> man.managements mi restituisce un array giusto? >> >> no :) >> probbilmente ti ha fregato irb che causa il fetch dei dati. Prova >> >> man.managements.class > > irb(main):004:0> man.managements.class > => Array d'ho, apparentemente non come me lo ricordo io, e quello veramente un array. Oppure no? Vedi la versione hardcore: >> ms= man.managements; ms.class.superclass.instance_method(:class).bind(ms).call => ActiveRecord::Associations::HasManyAssociation >> ms.class.superclass => Object 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 -- twitter: @riffraff blog (en, it): www.riffraff.info riffraff.blogsome.com work: circleme.com
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.