2013-07-10 23 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 
相關問題