检查用户是否在控制器中选择要上传的文件的最佳方法是什么?目前我有 -
def create
if @object.foo.file.exists?
do something to object
end
if @object.save etc.
但这会返回未定义的方法`存在?'为零:NilClass'
在控制台中,'存在?'在返回true的情况下工作,但在返回false时抛出错误。我已经尝试过#object.save'在查询之前是否存在?'但它并没有解决它。
答案 0 :(得分:1)
params散列中的对象是IO的子类的实例。根据上载文件的大小,它实际上可能是StringIO或由临时文件支持的File实例。在这两种情况下,对象都将具有original_filename属性,该属性包含文件在用户计算机上的名称以及包含上载文件的MIME类型的content_type属性。
如果用户未选择文件,则相应的参数将为空字符串。
因此,您可以先检查您的参数是否为空字符串。
希望这有帮助。