media = Media.new(params[:media])
media.save
@attachment.media = Media.find(????)
@attachment.save
我試着只是在做media.id
,但顯然,這是沒有保存到數據庫的媒體....所以我如何獲得ID?Ruby on Rails:如何在創建對象後立即獲取對象的ID?
media = Media.new(params[:media])
media.save
@attachment.media = Media.find(????)
@attachment.save
我試着只是在做media.id
,但顯然,這是沒有保存到數據庫的媒體....所以我如何獲得ID?Ruby on Rails:如何在創建對象後立即獲取對象的ID?
如果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並阻止其保存,儘管這種情況不常見。
爲什麼不只是做到以下幾點?
media = Media.new(params[:media])
media.save
@attachment.media = media
@attachment.save
爲什麼不使用通過關聯獲得的build_xxx方法?
@attachment.build_media(params[:media])
@attachment.save
我想這個媒體對象是無效的,因此還沒有被保存。
如果將被保存,您將有media.id已設置。