我目前在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 :(得分:0)
我自己解决了,只是在创建关系后添加了self.reload
。现在它在第一个请求中返回创建的关系。