R: variabili e nomi delle classi

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

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

-----Messaggio originale-----
Da: [email protected] [mailto:[email protected]]
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
Email: mailto://[email protected]
Skype: callto://l.mearelli


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs