我正在尝试使用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版本
答案 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子句。