Salve a tutti, scrivo qui per un problema che ho attualmente. In pratica mi trovo a dover realizzare una tabella relativa alle analisi dei pazienti, che prende come chiavi esterne quella del tipo di analisi, del paziente, del dottore che prescrive e dell'infermiere che esegue. Per le prime due chiavi non c'e' problema, le riesco a far prendere perfettamente, il dubbio e' sulla chiave del medico e dell'infermiere, perche' la situazione in cui mi trovo e' che medico e infermiere sono due sottoclassi che ereditano dalla tabella "Person". Chiedevo se voi conoscete qualche modo per far capire alla tabella analisi_paziente che il campo che io chiamo doctor_id deve fare riferimento al person_id della tabella Person (stessa cosa per nurse_id) di cui doctor e' una sottoclasse. Se non mi sono spiegato abbastanza bene chiedete pure, intanto grazie mille per le risposte!
on 24.04.2008 14:14
on 24.04.2008 14:23
On Apr 24, 2008, at 2:14 PM, Samuele Crescenti wrote: > > Chiedevo se voi conoscete qualche modo per far capire alla tabella > analisi_paziente che il campo che io chiamo doctor_id deve fare > riferimento al person_id della tabella Person (stessa cosa per > nurse_id) > di cui doctor e' una sottoclasse. In teoria dovresti avere una situazione cosi': class Person < ActiveRecord::Base; end class Doctor < Person; end class Nurse < Person; end class AnalisiPaziente < ActiveRecord::Base belongs_to :doctor belongs_to :nurse end Quel che non capisco e' da dove salti fuori il campo "person_id"... S.
on 24.04.2008 16:09
Ciao, innanzitutto grazie per la risposta. Il campo person_id salta fuori dalla migrate della tabella AnalisiPaziente, in cui per far capire le associazioni con doctor e nurse ho creato i campi doctor_id e nurse_id, che pero' non riesco ad usare, a differenza per esempio del patient_id che ruby in automatico mi collega alla tabella paziente una volta dichiarati nei model i belongs_to o has_many. Come faccio a dichiarare che con "doctor_id" e "nurse_id" io intendo di andarsi a prendere l'id del dottore o dell'infermiere della tabella person? perche' in person esiste solo il campo "id" globale, che e' lo stesso per infermieri e medici, non esistono i campi "doctor_id" e "nurse_id". E nei model di person e Analisi paziente cosa dichiaro? grazie mille Stefano Cobianchi wrote: > > In teoria dovresti avere una situazione cosi': > > class Person < ActiveRecord::Base; end > class Doctor < Person; end > class Nurse < Person; end > > class AnalisiPaziente < ActiveRecord::Base > belongs_to :doctor > belongs_to :nurse > end > > Quel che non capisco e' da dove salti fuori il campo "person_id"... > > S.
on 24.04.2008 16:24
On Apr 24, 2008, at 4:09 PM, Samuele Crescenti wrote: > di > andarsi a prendere l'id del dottore o dell'infermiere della tabella > person? perche' in person esiste solo il campo "id" globale, che e' lo > stesso per infermieri e medici, non esistono i campi "doctor_id" e > "nurse_id". Che versione di Rails stai usando? S.
on 24.04.2008 18:55
> Che versione di Rails stai usando?
uso ruby 1.8.6 con rails 2.0.2
on 24.04.2008 19:02
On Apr 24, 2008, at 6:55 PM, Samuele Crescenti wrote: > >> Che versione di Rails stai usando? > > uso ruby 1.8.6 con rails 2.0.2 Allora non so quale sia il problema, l'esempio che ho riportato io funziona perfettamente... S.
on 24.04.2008 19:10
ti incollo proprio il codice così magari si capisce meglio:
model/person.rb
class Person < ActiveRecord::Base
has_one :user
end
class Doctor < Person
end
class Nurse < Person
end
model/patients_analysis.rb
class PatientsAnalysis < ActiveRecord::Base
belongs_to :analysis
belongs_to :patient
belongs_to :doctor
belongs_to :nurse
end
db/migrate/019_create_patients_analyses.rb
class CreatePatientsAnalyses < ActiveRecord::Migration
def self.up
create_table :patients_analyses do |t|
t.integer :analysis_id
t.string :patient_id
t.integer :doctor_id
t.integer :nurse_id
t.boolean :performed
t.text :results
t.date :prescription_date
t.date :execution_date
t.timestamps
end
end
def self.down
drop_table :patients_analyses
end
end
on 24.04.2008 19:20
On Apr 24, 2008, at 7:10 PM, Samuele Crescenti wrote:
> ti incollo proprio il codice cosě magari si capisce meglio:
E fin qui ci siamo... posta anche la migrazione di Person
S.
on 24.04.2008 19:29
class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
t.string :type
# common attributes
t.string :first_name
t.string :last_name
# attributes for type=Infermiere
#
# attributes for type=medico
#
t.timestamps
end
end
def self.down
drop_table :people
end
end
on 24.04.2008 21:44
On Apr 24, 2008, at 7:29 PM, Samuele Crescenti wrote: > # > > # attributes for type=medico > # > > t.timestamps > > end Boh... posso solo dare la risposta classica dei programmatori: "da me funziona" :-) S.
on 25.04.2008 01:48
Grazie mille lo stesso per il tempo e l'aiuto! proverò ancora a vedere se riesco a risolvere in qualche modo e in caso positivo lascio traccia che magari in futuro può far comodo a qualcuno :) grazie ancora! ciao Stefano Cobianchi wrote: > > Boh... posso solo dare la risposta classica dei programmatori: "da me > funziona" :-) > > S.