如何在rails中验证表单中的照片

时间:2016-07-10 01:03:44

标签: ruby-on-rails ruby activerecord

我在rails中有一个产品型号has_many:照片。我想添加一些验证,确保您无法在不添加照片的情况下创建产品。我尝试在照片模型上添加validates_attachment_presence:image,但产品型号仍然没有照片保存。如何验证图像?此外,我希望用户添加至少5张照片

//product model
class Product < ActiveRecord::Base     
   has_many   :photos
end

//photo model
class Photo < ActiveRecord::Base
    belongs_to :product
    validates_attachment_presence :image
end

1 个答案:

答案 0 :(得分:0)

由于您没有发布表架构,我试图猜测它。

然后,要验证照片的presence/format,您可以使用validation-helpers并检查最少数量的照片,您可以通过以下方式创建自定义验证器:

class Product < ActiveRecord::Base
    has_many :photos
    before_save :images_limit_min

    private    
    def images_limit_min
        return if self.photos.empty?
        errors[:base] << "You must to upload at least 5 images" if self.photos.length < 5
    end
end

class Photo < ActiveRecord::Base
    belongs_to :product
    validates :product_id, presence: true, format: { with: %r{ \.(png|jpg|jpeg)$ }i, message: "custom message" }
end

注意:结构可能不完全正确,但我希望你有办法。