# R: variabili e nomi delle classi

**URL:** <https://www.ruby-forum.com/t/r-variabili-e-nomi-delle-classi/95949>\
**Category:** IT\
**Created:** [June 20, 2006, 8:15pm UTC](https://www.ruby-forum.com/t/r-variabili-e-nomi-delle-classi/95949 "2006-06-20T20:15:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![esox\_ch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/4da419/32.png) [@esox\_ch](https://www.ruby-forum.com/u/esox_ch)\
**Post date:** [June 20, 2006, 8:15pm UTC](https://www.ruby-forum.com/t/r-variabili-e-nomi-delle-classi/95949/1 "2006-06-20T20:15:02Z")

</div>

Ottimo mi hai risposto anche ad un’altra domanda che non avevo posto per  
paura di RTFM a pioggia sulle associazioni polimorfiche 😃

Me stanno a balla l’occhi quindi mo smorzo, domani mattina ci provo e te  
faccio  
sapé!  
Bella!  
Jeko

-----Messaggio originale-----  
Da: removed\_email\_address@domain.invalid [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]  
Per conto di Luca M.  
Inviato: martedì 20 giugno 2006 20.03  
A: ruby-it  
Oggetto: Re: [ruby-it] variabili e nomi delle classi

Stefano G. wrote:

> Scenario: ho la mia classe Attachment che è in has\_and\_belongs\_to\_many con 2 o piu classi (nel mio caso Project e Visit)

…

> def create  
> @foreignkey = params[:foreignkey]  
> @referrer = params[:referrer]  
> @oggetto = case @referrer  
> when ‘Project’ then Project.find(@foreignkey)  
> when ‘Visit’ then Visit.find(@foreignkey)  
> else nil  
> end  
> Potresti fare cosi:

@oggetto = Object.const\_get( params[:referrer] ).new

Poi, se sei su Rails 1.1, ci sono le polymorphic associations che  
consentono di associare ad un modello (e.g. Attachment) N diversi  
modelli.

nel tuo caso devi avere in Attachment i campi referrer\_id e  
referrer\_type poi:

class Project \< ActiveRecord::Base  
has\_many :attachments, :as =\> :referrer  
end

class Visit \< ActiveRecord::Base  
has\_many :attachments, :as =\> :referrer  
end

class Attachment \< ActiveRecord::Base  
belongs\_to :referrer, :polymorphic =\> true  
end

in questo modo puoi riferirti al referrer di un attachment come  
attachment.referrer e questo sara’ un oggetto del tipo giusto.

per esempio se fai:

progetto = Project.new  
attach = Attachment.new

puoi attaccare l’attach al progetto cosi:

attach.referrer = progetto

oppure

progetto.attachments \<\< attach

senza doverti preoccupare di impostare il tipo, questo ti puo aiutare  
soprattutto per le query.

ciao,  
Luca M.

–

## Web: [http://spazidigitali.com](http://spazidigitali.com) Email: mailto://removed\_email\_address@domain.invalid Skype: callto://l.mearelli

* * *

Ml mailing list  
removed\_email\_address@domain.invalid  
[http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)
