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