我知道标题不准确但我找不到另一种方法来写一个明确的问题标题。
在我的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
由于
答案 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)
这应为nil
和name
生成cid
值和正常值的有效查询。