使用零内容搜索数据库条目

时间:2014-05-15 14:41:52

标签: ruby-on-rails database redmine

我知道标题不准确但我找不到另一种方法来写一个明确的问题标题。

在我的MySQL数据库中,我有附件,如下所示:

#<Attachment id: 949, container_id: nil, container_type: nil, filename: "Quake_3.zip", disk_filename: "140515160454_Quake_3.zip", filesize: 491652766, content_type: "", digest: "84540939cc90c65bf7e101d0069da298", downloads: 0, author_id: 3, created_on: "2014-05-15 14:05:08", description: nil, disk_directory: "2014/05">

我想要做的是获得此条目,但是当我需要它时,我不知道id,因此我无法使用此信息。我想用文件名和container_id进行查询,我尝试了以下内容:`

att = Attachment.where("filename = ? AND container_id = 'nil'", fileName)

att = Attachment.where("filename = ? AND container_id = ?", fileName, nil)

很多东西似乎没什么用。这可能是一个常见的问题,但我没有找到如何执行此查询。

你能用这两个参数帮助我获得这个条目吗? (描述也可以)

我正在使用Rails 3.2.17

由于

2 个答案:

答案 0 :(得分:3)

Attachment.where("filename = ? AND container_id IS NULL", fileName)

Attachment.where(filename: fileName, container_id: nil)

答案 1 :(得分:2)

我想问题是,在检查SQL nil / NULL值时,您需要使用IS比较器,而不是=

如果您不使用基于字符串的where子句

,Rails将生成正确的查询
att = Attachment.where(filename: name, container_id: cid)

这应为nilname生成cid值和正常值的有效查询。