2011-01-03 11 views
0

現在、モデルオブジェクトを作成し、そのモデルオブジェクトとの関係を設定するコントローラがレールにあります。私はその関係をレスポンスとして欲しがっていますが、モデルオブジェクトが最初のリクエスト内で作成された場合、私はその関係のためにnilを取得します。最初のリクエストの後、私は応答として適切な関係を得ます。リレーションシップを設定した後、オブジェクトモデルを作成した直後にモデルオブジェクトを更新する必要がありますか?Railsでのアクティブレコードの問題と設定関係

マイコード:

コントローラー:

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 

モデル:

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 

答えて

0

は、自分でそれを解決しただけの関係の作成後self.reloadを追加しました。これで、最初のリクエスト内に作成された関係が返されます。