Carrierwave - 未定义的方法`存在?'为零:NilClass

时间:2014-11-04 09:24:46

标签: ruby-on-rails carrierwave

检查用户是否在控制器中选择要上传的文件的最佳方法是什么?目前我有 -

def create
 if @object.foo.file.exists?
   do something to object
 end

 if @object.save etc.

但这会返回未定义的方法`存在?'为零:NilClass'

在控制台中,'存在?'在返回true的情况下工作,但在返回false时抛出错误。我已经尝试过#object.save'在查询之前是否存在?'但它并没有解决它。

1 个答案:

答案 0 :(得分:1)

From the rail guides:

  

params散列中的对象是IO的子类的实例。根据上载文件的大小,它实际上可能是StringIO或由临时文件支持的File实例。在这两种情况下,对象都将具有original_filename属性,该属性包含文件在用户计算机上的名称以及包含上载文件的MIME类型的content_type属性。

     

如果用户未选择文件,则相应的参数将为空字符串。

因此,您可以先检查您的参数是否为空字符串。

希望这有帮助。