Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何查找包含空文件的所有记录?_Ruby On Rails_Ruby_Carrierwave - Fatal编程技术网

Ruby on rails 如何查找包含空文件的所有记录?

Ruby on rails 如何查找包含空文件的所有记录?,ruby-on-rails,ruby,carrierwave,Ruby On Rails,Ruby,Carrierwave,假设我有一个带有carrierwave文件上传的模型 class Book < ActiveRecord::Base mount_uploader :file, BookImageUploader end 现在我需要用where子句查找所有记录,以便它查找所有没有附加文件的记录 差不多 Book.where(file.file: nil) 谢谢你的帮助 我注意到gem向表中添加了file列。所以这对我有效 Book.where("file is null")

假设我有一个带有carrierwave文件上传的模型

   class Book < ActiveRecord::Base

    mount_uploader :file, BookImageUploader

    end
现在我需要用where子句查找所有记录,以便它查找所有没有附加文件的记录

差不多

Book.where(file.file: nil)

谢谢你的帮助

我注意到gem向表中添加了file列。所以这对我有效

Book.where("file is null")

Book.where(文件:nil)
应该足够了<代码>文件。文件是CarrierWave Uploader的虚拟属性。抱歉,这不起作用。文件从不为零。文件返回上传程序对象。文档注释中也提到了这一点:u.avatar永远不会返回nil,即使没有与之相关的照片。要检查照片是否保存到模型中,请使用u.avatar.file.nil?相反请在ActiveRecord下检查,它显示
u.avatar
将永远不会返回
nil
。但是
Book.where(file:nil)
在数据库中进行查询以正确检索内容
Book.where(file:nil).first.file
将不会是
nil
,但查询将返回那些文件不存在的所有书籍请参见-它只是公开了方法,使您认为
u.avatar
不是nil。它与数据库中持久化的内容无关<代码>书。在哪里(文件:NIL)。首先。Read属性(:文件)= nIL< /Cord>。您考虑查询序列化的JSON元数据吗?您能否添加两个示例,说明carrierwave如何将其元数据存储在数据库列中—一个用于有文件的书籍,另一个用于没有文件的书籍?仅仅从carrierwave的源代码中提取格式是很困难的。你使用什么数据库?
Book.where("file is null")