从尚未保存的项目中获取ID

时间:2013-10-02 11:00:56

标签: ruby-on-rails ruby ruby-on-rails-3.2

我一次将数据保存到两个不同的模型中。这已成功完成。

这两个模型相互关联,因此最常将其他ID存储在保存中。如何在QuestionnaireResult中存储questionnaire_contact_id?

class QuestionnaireResultsController < ApplicationController

  def create
    @questionnaire_result = QuestionnaireResult.new(params[:questionnaire_result])
    @questionnaire_contact = QuestionnaireContact.new(params[:questionnaire_contact])

    respond_to do |format|
      if @questionnaire_result.save
        @questionnaire_contact.save
        format.html { redirect_to root_path, notice: 'Questionnaire was successfully submited.' }
        format.json { render json: questionnaires_path, status: :created, location: questionnaires_path }
      else
        format.html { render action: "new" }
        format.json { render json: questionnaires_path.errors, status: :unprocessable_entity }
      end
    end
  end

end

2 个答案:

答案 0 :(得分:1)

您应该使用activerecord associations

def create
  @questionnaire_result = QuestionnaireResult.new(params[:questionnaire_result])
  @questionnaire_contact = @questionnaire_result.questionnaire_contacts.new(params[:questionnaire_contact])
  respond_to do |format|
    if @questionnaire_result.save #this line will automatically save associated contact
      # code
    else
      # code
    end
  end
end

答案 1 :(得分:0)

解决了,就像这样简单:

class QuestionnaireResultsController < ApplicationController

  def create
    @questionnaire_result = QuestionnaireResult.new(params[:questionnaire_result])
    @questionnaire_contact = QuestionnaireContact.new(params[:questionnaire_contact])

    respond_to do |format|
      @questionnaire_contact.save
      @questionnaire_result.admin_questionnaire_contact_id = @questionnaire_contact.id
      if @questionnaire_result.save

        format.html { redirect_to root_path, notice: 'Questionnaire was successfully submited.' }
        format.json { render json: questionnaires_path, status: :created, location: questionnaires_path }
      else
        format.html { render action: "new" }
        format.json { render json: questionnaires_path.errors, status: :unprocessable_entity }
      end
    end
  end

end