Rails拒绝将一个字段插入数据库

时间:2013-07-10 22:18:59

标签: mysql ruby-on-rails ruby activerecord

基本上我从表中获取元素的id并将其插入另一个元素中。

vuln_id = ActiveRecord::Base.connection.execute("SELECT FROM BLAH WHERE ...")                   

pid = vuln_id.first

puts "=============================="
puts pid # this echos the ID
puts "=============================="

if pid.empty? 
    puts "pid is empty"
end

rd = Report.new(:plugin_id => pid, :report_id => report_id)
rd.save()

在Rails控制台中,当我这样做时

Report.dbaction(params)

它运行模型,这是输出

(0.3ms)  SELECT STATEMENT.....
==============================
186
==============================
(3.0ms)  BEGIN
SQL (0.3ms)  INSERT INTO `report_data` (`created_at`, `report_id`, `updated_at`) VALUES ('2013-07-10 22:03:59', 6, '2013-07-10 22:03:59')
(33.9ms)  COMMIT

它插入report_id但它不会将pid值插入数据库,即使它存在。为什么是这样?

快速编辑:plugin_id肯定存在于表中。我三重检查。

以下是模型文件的其余部分

class Report < ActiveRecord::Base

    belongs_to :site
    has_many :plugins

1 个答案:

答案 0 :(得分:1)

您从第1行的数据库查询中获得了第一个结果,但我相信execute会返回包含您选择的所有列的数组。您可能需要:pid = vuln_id.first[0]或类似内容(或pid = vuln_id[0][0]或pid = vuln_id.first.first)。

您还应验证查询是否返回任何内容,以便整行可能类似于:

pid = vuln_id.first.first if vuln_id and vuln_id.count > 0