# Cosa rappresenta klass?

**URL:** <https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963>\
**Category:** IT\
**Created:** [July 1, 2011, 12:12pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963 "2011-07-01T12:12:58Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [July 1, 2011, 12:12pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/1 "2011-07-01T12:12:58Z")

</div>

Leggendo [http://it.asciicasts.com/episodes/197-nested-model-form-parte-2](http://it.asciicasts.com/episodes/197-nested-model-form-parte-2)  
mi sono imbattuto in questo codice:

new\_object =  
f.object.class.reflect\_on\_association(association).klass.new

Intanto ho scoperto il metodo reflect\_on\_association, che ho visto per  
la prima volta 🙂 pero’ non ho capito cosa rappresenta il metodo  
klass.  
Io conoscevo class.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:14pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/2 "2011-07-01T12:14:49Z")

</div>

class una keyword di linguaggio in ruby, quindi non pu essere  
utilizzata come nome di metodo. lo “standard” scelto per chiamare un  
metodo che ritorni una classe spesso klass.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:17pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/3 "2011-07-01T12:17:17Z")

</div>

2011/7/1 Stefano V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> class una keyword di linguaggio in ruby, quindi non pu essere utilizzata  
> come nome di metodo.

a=  
a.class, non sto chiamando cosi’ il metodo class su a?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:21pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/4 "2011-07-01T12:21:00Z")

</div>

scusami, ho risposto con troppa veemenza senza pensare a cosa dicevo 🙂

.class un metodo gi definito in Object  
([http://www.ruby-doc.org/core/classes/Object.html](http://www.ruby-doc.org/core/classes/Object.html)), quindi gi  
presente su tutti gli oggetti.

in quel caso, volevano un metodo che ritornasse una classe, ma  
ovviamente “class” era gi un metodo occupato e non bello ridefinirlo.  
da qui il nome “klass”, per restituire una seconda classe, interessante  
per quell’oggetto.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:35pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/5 "2011-07-01T12:35:13Z")

</div>

Provo cos:

Activity.reflect\_on\_association(:activity\_documents).class # --\>  
ActiveRecord::Reflection::AssociationReflection

Activity.reflect\_on\_association(:activity\_documents).klass # --\>  
ActivityDocument

Il primo metodo, “class”, di Object e ritorna la classe dell’oggetto  
che viene restituito dal metodo “reflect\_on\_association”. In questo  
caso, ActiveRecord::Reflection::AssociationReflection.

Il secondo metodo, “klass”, di  
ActiveRecord::Reflection::AssociationReflection, e ritorna la classe  
relativa alla relazione :activity\_documents sul modello Activity, in  
questo caso ActivityDocument.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:24pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/6 "2011-07-01T12:24:05Z")

</div>

2011/7/1 Stefano V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> scusami, ho risposto con troppa veemenza senza pensare a cosa dicevo 🙂
> 
> .class un metodo gi definito in Object  
> ([http://www.ruby-doc.org/core/classes/Object.html](http://www.ruby-doc.org/core/classes/Object.html)), quindi gi presente su  
> tutti gli oggetti.
> 
> in quel caso, volevano un metodo che ritornasse una classe, ma ovviamente  
> “class” era gi un metodo occupato e non bello ridefinirlo. da qui il nome  
> “klass”, per restituire una seconda classe, interessante per quell’oggetto.

A dire la verita’ non ho capito 🙂

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 1, 2011, 12:51pm UTC](https://www.ruby-forum.com/t/cosa-rappresenta-klass/208963/7 "2011-07-01T12:51:57Z")

</div>

2011/7/1 Stefano V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ActiveRecord::Reflection::AssociationReflection.
> 
> Il secondo metodo, “klass”, di  
> ActiveRecord::Reflection::AssociationReflection, e ritorna la classe  
> relativa alla relazione :activity\_documents sul modello Activity, in questo  
> caso ActivityDocument.

🙂 Grazie mille.
