使用哈希调用模型上的函数哪里找不到DB记录

时间:2015-07-07 10:25:46

标签: ruby-on-rails activerecord

我正在尝试使用ActiveRecord模型上的Rails .where()函数检索记录。

如果子句在字符串中定义,则该函数仅返回记录,因此:

按预期返回单个记录

Model.where("business_id = 16")

Model.where("business_id = :business_id", {business_id: 16})

(我看到了SQL:WHERE (business_id = 16)

返回空数组

Model.where({:business_id => 16})

(我看到WHERE model.business_id = 16

Model.where({business_id: 16})

Model.where(:business_id => 16)

数据库记录存在,我们查询的字段定义为那里的整数。

发生了什么事?

测试从binding.pry

开始

版本数据

Rails 3.2.21

ruby​​ 2.1.5p273(2014-11-13修订版48405)[x86_64-darwin13.0]

在Ruby 2.1.5上推出0.10.1版本

2 个答案:

答案 0 :(得分:0)

无论你写的是什么都很好。您只需在rails控制台上运行以下行。

Model.find_by_business_id(16)

我认为它什么都不会返回。 business_id = 16

没有记录

答案 1 :(得分:-1)

每当您使用 where()并传递参数时,它都会将这些作为哈希值(键值对)。所以你不需要像这样传递

Model.where({:business_id => 16})

你应该传递这样的东西 in rails 3

0008,0050: {
         Name: "AccessionNumber"
         Type: "Null"
         Value: null
           }-
0008,0052: {
        Name: "QueryRetrieveLevel"
        Type: "String"
        Value: "STUDY"
         }-
 0010,0010: {
       Name: "PatientName"
       Type: "String"
       Value: "KNIX"
            }-
 0010,0020: {
       Name: "PatientID"
        Type: "String"
        Value: "ozp00SjY2xG"
        }-
  0020,000d: {
       Name: "StudyInstanceUID"
        Type: "String"
       Value: "1.2.840.113619.2.176.2025.1499492.7391.1171285944.390"
              }-
    }"

in rails 4

Model.where(:business_id => 16) 

此外,您还可以将rails 3语法用于rails 4中的where子句。