我正在尝试确保Picture模型的每个实例都附加了一个文件。
换句话说 - 表格中有两个字段:
:file
:remote_file_url
我希望用户至少填写其中一个。
当我验证:file的存在,并提交remote_file_url而不是file - 那么它会给出验证错误。
我现在找到的唯一方法就是这样做:
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
答案 0 :(得分:4)
The wiki表示您可以像这样验证您的上传:
mount_uploader :avatar, AvatarUploader
validates_presence_of :avatar
它没有提到对远程URL的任何不同处理,但强调Carrierwave验证文件的存在而不仅仅是URL的存在。因此,给定的远程URL必须引用可以上载的有效文件。
你说“验证存在:文件”,但也许这可能就是重点。希望这会有所帮助。