我正在尋找正確的現在,解決當前問題的最佳辦法:我有兩個型號,產品和照片。照片通過has_many與產品關聯。 當用戶創建新產品時,在實際產品保存到數據庫之前,她還可以使用嵌套表單(carrierwave,jquery)添加照片。由於該產品尚不存在,因此我正在尋找將我的照片以正確關聯保存到數據庫的最佳方式。最佳實踐:臨時記錄用的has_many協會
一些方法來我的腦海裏:
1)我的產品保存到數據庫中,當用戶點擊「新產品」向右走,用正確的ID,之後,如果用戶點擊再次刪除「取消」。通過這種方式,我必須對我的驗證進行一些調整,然後進行一些客戶端驗證。 如果用戶在創建產品期間關閉瀏覽器窗口,可能會出現問題 - 產品將保留在數據庫中。
2)我把它保存到數據庫和國旗不知何故,有一個奇怪的ID或is_temp字段或類似的東西..這樣,每次我可以清理數據庫中的用戶登錄「着性「馬上刪除東西(和所有相關照片)。
3)在內存中創建一個臨時ID,並且不保存該產品。我可以將照片保存爲與此臨時ID相關聯,並且當用戶點擊最終保存時,我將product_id更改爲新的真實產品ID
對我而言,至今爲止,解決方案2看起來是最好,最乾淨的方式它與Ryan Bates的客座記錄Railscast類似,但也許我在這裏錯過了一些東西,而且有一種更簡單的方法。 任何其他解決方案,高度讚賞。
非常感謝!
我通常提供一個非常簡單的形式,只有一些非常特定的領域。例如,對於產品,您有一個項目名稱和一個項目編號。我將使用一個彈出窗口(引導程序或jqueryui對話框),允許用戶將產品添加到類別中,而不必通過僅提供項目編號和項目名稱而離開該頁面。然後,如果他們需要添加照片,他們會進入產品編輯表單,在其中他們可以執行其他任何操作。 –
就您的三種解決方案而言,我不喜歡選項2,因爲它會在數據庫中留下記錄,直到下次用戶登錄時(可能是幾個月甚至從來不會),即使您在註銷,你認爲他們註銷了什麼?會話超時?用戶點擊「註銷」?我會選擇#1或#3,更傾向於#1 –
謝謝你,我的確和#1一起去了。我正在考慮用#2的方式刪除舊記錄,並將其作爲cron,這與Ryan Bates的Railscast類似。但現在它很好,大家都很開心:-) 再次感謝! –