2010-06-15 3 views

Répondre

2

Post.first.comments est un délégant. Cela ne vous rend pas directement un tableau, mais si vous en faites quelque chose, il en devient un. Ceci est utile, car il vous permet de faire des choses comme

Post.first.comments.all(:conditions => {:author_name => 'RJH'}) 

sans avoir à injecter ces méthodes dans l'objet de tableau, ou l'extension de la classe Array.

+0

OK, merci. Mais existe-t-il un moyen de savoir quelle classe est Post.first.comments si la méthode même #class est déléguée? – Jakub

+1

vous pourriez trouver ce morceau de la source de rails intéressant: http://github.com/rails/rails/blob/2-3-stable/activerecord/lib/active_record/associations/association_proxy.rb – BaroqueBobcat

+0

OK, merci beaucoup! "Pour ceux qui pourraient trébucher sur ce fil, citation des docs: " Comme un cas de coin, il supprime même la méthode + class + et c'est pourquoi vous obtenez 'blog.posts.class # => Array' si l'objet derrière blog.posts n'est pas un tableau, mais un ActiveRecord :: Associations :: HasManyAssociation. – Jakub

Questions connexes