0
如果我有兩個模型,並且正在使用accepts_nested_attributes_for
我應該在哪兒爲我的孩子模型進行驗證。在哪裏執行驗證
例如;如果我想驗證圖像大小和限制(即只允許用戶上傳3張)我應該在我使用carrierwave上傳我的圖片動物或AnimalImage模型
class Animal < ActiveRecord::Base
has_many :animal_images, dependent: :destroy
accepts_nested_attributes_for :animal_images, allow_destroy: :true
end
class AnimalImage < ActiveRecord::Base
mount_uploader :image, AnimalImageUploader
belongs_to :animal
end
進行驗證。我注意到他們有一些內置的輔助方法,但是從例子中我所見過的圖像總是在父模型(即具有化身的用戶)
任何幫助表示讚賞
感謝
謝謝,這個驗證會在圖片創建後發生,雖然不是嗎?它可以在以前完成嗎? – Richlewis 2014-09-24 10:47:04
不確定你的意思是「創建」。通常情況下,如果任何驗證失敗,則父項和子項記錄被插入到ROLLBACKed事務中。然後,剩下的內存對象不會保存到數據庫中。沿着這條路徑的某處,Carrierwave將文件保存到磁盤。我不記得事件和回調的具體順序,但可能最終會在磁盤上留下剩餘的文件。不過,你永遠不應該在數據庫中得到任何記錄。 – Teoulas 2014-09-24 10:56:21
不,我沒有在數據庫中得到任何東西,我可以看到在控制檯中的回滾..ahh仔細檢查後,它正在使用一個tmp文件,然後用戶必須刪除已超過極限的圖像 – Richlewis 2014-09-24 11:08:03