Проблема с активной записью в Rails и установкой отношений - PullRequest
0 голосов
/ 03 января 2011

В настоящее время у меня есть контроллер в рельсах, где я создаю объект модели и устанавливаю отношение к этому объекту модели. Я хочу, чтобы это отношение было ответом, но если объект модели создается в первом запросе, я получаю ноль для отношения. После первого запроса я получу правильные отношения в ответ. Нужно ли обновлять объект модели после установки отношения, сразу после создания объектной модели?

Мой код:

Контроллер:

  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

1 Ответ

0 голосов
/ 03 января 2011

решил сам, только добавил self.reload после создания отношений. Теперь он возвращает созданные отношения в первом запросе.

...