如果我有两个模型,并且正在使用accepts_nested_attributes_for
我应该在哪里为子模型进行验证。
例如;如果我想验证图像大小和限制(即只允许用户上传3张图像)我应该在Animal或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
我正在使用carrierwave上传我的图片。我注意到他们有一些内置的辅助方法但是从我看到的例子我看到的图像总是在父模型中(即用户有头像)
任何帮助表示赞赏
由于
答案 0 :(得分:2)
如果要限制每个Animal的图像数量,则必须将此验证添加到Animal模型中。如果您想验证单个图像上的某些内容(例如文件类型,大小等),那么这些将转到AnimalImage模型。
例如:
class Animal
validate :limit_num_of_images
def limit_num_of_images
errors.add(:animal_images, :less_than_or_equal_to, count: 3) if animal_images.size > 3
end
end
这个例子非常简单,但它应该让你开始。例如,遗漏的一件事是对有效图像的任何检查。您可能只想考虑有效图像的数量。