我对DB进行以下调用。
@patientRegistration = PatientRegistration.find(:all,
:conditions=>["name = '#{patientName}'"])
这将根据给定名称搜索患者注册。我得到一个有效的@patientRegistration
对象。当我调用@patientRegistration.inspect
时,它会正确打印数据库中对象的所有值。
但是当我尝试通过执行以下操作来读取特定属性(比如id或name)时:@patientRegistration.id
或@patientRegistration.name
,我得到的值无效。它的空白或一些垃圾值。我不明白检查如何正确检索所有值,但读取单个属性会产生无效值。
由于
答案 0 :(得分:3)
find(:all)
返回与条件匹配的所有记录的数组(inspect
可能会在方括号中显示结果)。 @patientRegistration.first.name
将返回数组中第一条记录的名称。但是,如果您只对符合条件的第一条记录或唯一记录感兴趣,则可以使用find(:first)
代替:
@patientRegistration = PatientRegistration.find(:first,
:conditions => ["name = ?", patientName])
请注意,我还更改了您的条件以使用参数,以便它不再受SQL注入攻击的威胁。
您还可以使用基于属性的查找器重写此代码:
@patientRegistration = PatientRegistration.find_by_name(patientName)
这将执行find(:first)
。相当于find(:all)
,请使用find_all_by
代替find_by
。