2010-11-15 153 views
0

保存兩件事情到數據庫我的「創造」在我的「消息」控制器的功能是這樣的:Ruby on Rails的:在控制器

def create 
    @message = Message.new(params[:message]) 
    @message2 = Message.new(params[:message]) 
    @message.sender_deleted = false 
    @message2.sender_deleted = true  
    if @message2.save 
     ... 
    else 
     logger.debug("SAVE DIDN'T WORK") 

無論出於何種原因,消息2無法保存,但@message能夠。我相信這是因爲你只需要保存一個名爲@message的變量,但我無法弄清楚如何解決這個問題。我需要在保存時將多件事情保存到數據庫中 - 還有其他方法可以做到這一點,或者我是否完全錯誤?

感謝您的幫助

回答

3

沒有理由不能保存超過一次的動作,雖然爲什麼你想要做這樣的事情是值得商榷的。您需要將這些保存放入交易中,以便只在兩個記錄有效時才保存。當保存失敗時,save!將引發異常。

def create 
    @message = Message.new(params[:message].merge(:sender_deleted=>false)) 
    @message2 = Message.new(params[:message].merge(:sender_deleted=>true)) 
    Message.transaction do 
    @message.save! 
    @message2.save! 
    end 
    redirect_to .... # handle success here 
rescue ActiveRecord::RecordNotSaved, ActiveRecord::RecordInvalid 
    # do what you need to deal with failed save here, 
    # e.g., set flash, log, etc. 
    render :action => :new 
    end 
end 
+0

具體來說,在這種情況下,我做一個基本的信息服務,並且它允許多個收件人。所以我試圖爲收件人列表中的每個人啓動數據庫條目。並感謝您的迴應! – RankWeis 2010-11-15 09:13:54