2013-07-10 26 views
0

基本上我从表中获取元素的id并将其插入到另一个元素中。Rails拒绝在数据库中插入一个字段

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 
+0

它的运行轨道4.一直停留在这一个多小时,现在,我敢肯定,这一些明显的... – Kush

+0

你能与我们分享你的模型?谢谢。 –

+0

这是从模型文件,我也更新了模型文件顶部的初始帖子 – Kush

回答

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 
相关问题