2011-01-03 7 views
0

Ich habe derzeit eine Steuerung in Schienen, wo ich ein Modellobjekt erstellen und eine Beziehung zu diesem Modellobjekt festlegen. Ich möchte diese Beziehung als eine Antwort, aber wenn das Modellobjekt innerhalb der ersten Anfrage erstellt wird, werde ich für die Beziehung null. Nach der ersten Anfrage bekomme ich die richtige Beziehung als Antwort. Muss ich das Modellobjekt nach dem Festlegen einer Beziehung aktualisieren, nachdem ich das Objektmodell erstellt habe?Problem mit Active Record in Rails und Einstellung Beziehungen

Mein Code:

Controller:

def create 
    @patient = Patient.find_or_create_by_prename_and_lastname_and_birthday(params[:patient])  
    @doctor = Doctor.find(current_user.id) 
    @patient.create_qr_code_from_doctor_if_no_exists(@doctor) 
    @qr_code = @patient.get_last_qr_code 
    respond_to do |format| 
     format.json { 
     render :json => @qr_code.to_json 
     } 
    end 
    end 

Modell:

def create_qr_code_from_doctor_if_no_exists(doctor) 
    if self.qr_codes.size == 0 
     QrCode.create!(:patient => self, :doctor => doctor) 
    end 
    end 

    def get_last_qr_code 
    if(self.qr_codes.size > 1) # sort only if there is more than one QR-Code 
     self.qr_codes.sort do |x,y| 
     y.created_at <=> x.created_at 
     end 
    end 
    self.qr_codes.at(0) 
    end 

Antwort

0

es von mir gelöst, nur self.reload nach der Gründung der Beziehung gegeben. Jetzt wird die erstellte Beziehung innerhalb der ersten Anfrage zurückgegeben.