2013-10-02 31 views
0

我一次將數據保存到兩個不同的模型。這已成功完成。從尚未保存的項目獲取ID

這兩個模型是相互關聯的,所以大多數人在保存時存儲其他ID。如何將Questionire_contact_id存儲在QuestionnaireResult中?

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 

回答

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 
+0

這是乾淨多了,然後我的解決方案,謝謝 –

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