gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:44:50 25 4
gpt4 key购买 nike

基本上,我从表中获取元素的 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 行中的数据库查询中获取第一个结果,但我相信 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

关于mysql - Rails 拒绝将一个字段插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com