2010-07-30 63 views

回答

5

如果media.id未指定,在保存和media.save返回false,不過,因爲你沒有檢查它,你沒有注意到的時候可能有錯誤。

避免這個問題的方法是要求嚴格的節省:

def something 
    media = Media.new(params[:media]) 

    media.save! 

rescue ActiveRecord::RecordInvalid 
    # Something couldn't be saved 

    render(...) 
end 

一般來說,如果記錄正確保存,然後media.errors.full_messages將是一個空數組。

如果沒有錯誤,那麼您的before_after_過濾器之一可能會返回false並阻止其保存,儘管這種情況不常見。

2

爲什麼不只是做到以下幾點?

media = Media.new(params[:media]) 

media.save 

@attachment.media = media 
@attachment.save 
1

爲什麼不使用通過關聯獲得的build_xxx方法?

@attachment.build_media(params[:media]) 
@attachment.save 
0

我想這個媒體對象是無效的,因此還沒有被保存。

如果將被保存,您將有media.id已設置。

相關問題