2013-12-21 138 views
0

有一個在評論控制器下面的代碼:如何檢查Rails中是否存在關聯對象?

def create 
    current_user.comments.create!(place: current_place, content: params[:content]) 
    render json: encode_result 
    end 

    private 
    def current_place 
     Place.find(params[:place_id]) 
    end 

此代碼創建了當前用戶和當前設立一個新的註解;如果當前的地方不存在,則此代碼會拋出異常RecordNotFound。我可以發送'place_id'而不是'place'作爲'create'方法,但是我需要在創建新評論之前檢查是否存在位置。請告訴我,我的解決方案是否好,還有更好的方法嗎?提前致謝。

回答

1

這是做它應該做的事情。你的代碼是完美的,因爲它現在寫了。如果指定的記錄不存在,您特別要停止執行。你所需要做的就是處理異常。

您可以通過rescue_from或整個應用程序將rescue_from放入您的ApplicationController來爲您的整個控制器執行此操作。

0

你可以這樣做.........

def create 
current_user.comments.create!(place: current_place, content: params[:content]) if current_place 
    render json: encode_result 
    end 

    private 
    def current_place 
     Place.find(params[:place_id]) 
    end 
+0

指定地點時,這將調用相同的查詢兩次,一個是如果條件和第二個:current_place。所以這不是一個最佳解決方案。儘量讓它最優我正在投票 –

+0

好................. –