4

我试图确保 Picture 模型的每个实例都附加了一个文件。

换句话说 - 表单中有两个字段:

:file
:remote_file_url

我希望用户至少填写其中一项。

当我验证 :file 的存在,并提交 remote_file_url 而不是文件时,它会给出验证错误。

我现在找到的唯一方法是这样做:

class Picture < ActiveRecord::Base
  validate :file_xor_remote_file_url

  private    
  def file_xor_remote_file_url
    if !(file.blank? ^ remote_file_url.blank?)
      errors.add(:base, "Specify a file to upload, or file URL, not both")
    end
  end

end
4

1 回答 1

4

wiki说您可以像这样验证您的上传:

mount_uploader :avatar, AvatarUploader
validates_presence_of :avatar

它没有提到对远程 URL 的任何不同处理,但强调 Carrierwave 验证文件的存在而不仅仅是 URL 的存在。因此,给定的远程 URL 必须引用可以上传的有效文件。

您说“验证 :file 的存在”,但也许这可能是重点。希望这可以帮助。

于 2013-10-16T19:56:44.313 回答