Ruby, activerecord e relazioni complicate

Buongiorno gente.
Sto cercando di sistemare un programmino in Ruby e gtk2 che sfrutta come
database mysql; il problema è questo: per i dati che inserisco ho la
necessità di far comparire alcuni dati come la nazione o altri per due o
più volte, tipo “nazione provenienza”, “nazione destinazione”, “nazione
quel_che_è”…

Naturalmente fino a che è un’associazione uno-a-molti singola ci arrivo,
ma in questo caso come si fa? Finora non ho messo in relazione le
tabelle e ho gestito la cosa a mano, scrivendo direttamente il valore
che mi serve, ma ultimamente la complessità sta crescendo e una gestione
relazionale semplificherebbe un po’ di lavoro.
Sto cercando se c’è documentazione, ma o sbaglio le chiavi o guardo nei
posti sbagliati…

Come sempre grazie :slight_smile:

2011/4/27 Daneel O. [email protected]:

che mi serve, ma ultimamente la complessit sta crescendo e una gestione
relazionale semplificherebbe un po’ di lavoro.
Sto cercando se c’ documentazione, ma o sbaglio le chiavi o guardo nei
posti sbagliati…

Hai almeno due alternative:

Nel caso del concetto di nazione, dove probabilmente l’unica e sola
cosa che ti interessa e’ il nome della stessa, potresti cercare
qualche plugin che gestisca gli enum, o farlo a mano salvando un campo
stringa che poi richiedi tramite validazione che abbia uno dei valori
permessi
Se ti serve davvero di modellare il concetto di nazione (il che
potrebbe essere un po’ palloso e soggetto ad errori, come ad esempio
avere due nazioni che si chiamano quasi uguali, che in effetti sono la
stessa, ma tu tratti come diverse), dovresti orientarti sulle
relazioni polimorfiche, puoi vedere la documentazione di ActiveRecord
sulla belongs_to / has_one ma e’ molto tersa, meglio cercarti qualche
tutorial o screencast sulle relazioni polimorfiche.

Ciao!

Luca De Marinis wrote in post #995342:

2011/4/27 Daneel O. [email protected]:

che mi serve, ma ultimamente la complessit sta crescendo e una gestione
relazionale semplificherebbe un po’ di lavoro.
Sto cercando se c’ documentazione, ma o sbaglio le chiavi o guardo nei
posti sbagliati…

Hai almeno due alternative:

[…]

Ciao!

Alla fine come dicevi mi sono imbattuto nelle relazioni polimorfiche e
cose simili; ho risolto in questa maniera (semplificando un po’):

class Animals < ActiveRecord::Base
belongs_to :breed, :class_name => “Breeds”

belongs_to :naz1, :class_name => “Naz1”
belongs_to :naz2, :class_name => “Naz2”
belongs_to :naz3, :class_name => “Naz3”
belongs_to :naz4, :class_name => “Naz4”
end

class Nations < ActiveRecord::Base
has_many :nations
end

class Naz1 < Nations
end
class Naz2 < Nations
end
class Naz3 < Nations
end
class Naz4 < Nations
end

e:

selnaz1.each do |n|
iter1 = listanaz1.append
iter1[0] = n.id.to_i
iter1[1] = n.name
iter1[2] = n.code
end

che crea una lista di scelta; per le altre naturalmente è lo stesso…
sì, non avete idea dei giri che fanno certi animali :slight_smile:

Nel database nella tabella Animals naturalmente ci sono i campi naz1_id,
naz2_id, naz3_id e naz4_id.

Nel caso ci siano sistemi migliori, ditemi pure :slight_smile:

Ancora grazie e alla prossima :slight_smile:

belongs_to :naz4, :class_name => “Naz4”
end

Scusate non ho modo di provare ora, ma non possibile fare una cosa tipo

class Animals < ActiveRecord::Base
belongs_to :breed, :class_name => “Breeds”

belongs_to :nations, :as => :naz1
belongs_to :nations, :as => :naz2
belongs_to :nations, :as => :naz3
belongs_to :nations, :as => :naz4
end

Avendo dichiarato pi associazioni a :nations e con :as dandogli nomi
diversi in tabella non dovrei avere dei campi del tipo naz1_id, naz2_id,
naz3_id e naz4_id, oppure :as richiede un associazione polimorfica?

Grazie e saluti

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