将其保存到变量时出现ActiveRecord错误

时间:2013-03-19 00:07:08

标签: ruby-on-rails ruby activerecord

我试图从这样的模型中保存一个id-number:

x_value = Info.where("info_id='#{@infodata[:educationInfoRef]}'").select(:id)

在终端中它返回正确,但当我将其保存到数据库时,它会保存如下值:#<ActiveRecord::Relation:0x007f884b48c788>

当我从终端打印它时它返回nil。

为什么呢?我怎样才能保存实际值?

我正在使用rails 3.

1 个答案:

答案 0 :(得分:0)

首先要做的事情。如果@infodata是使用用户输入构建的,则此代码很容易进行sql注入。将您的代码更改为

x_value = Info.where(info_id: @infodata[:educationInfoRef]).select(:id)

让我们来谈谈你的问题。你忘了打电话给.first所以它会返回一条记录。举个例子,试试这个。

info = Info.where(info_id: @infodata[:educationInfoRef]).first
info.id # returns the id of the record
info.info_id # returns the value of @infodata[:educationInfoRef]