gpt4 book ai didi

ruby-on-rails - rails 列不能为空 :

转载 作者:行者123 更新时间:2023-12-03 15:48:48 24 4
gpt4 key购买 nike

我注意到我的应用程序会自动将所有进程设置为在创建后立即完成。我查看了它,找不到为什么在没有被告知的情况下更新日期,但我发现我的一个观点正在寻找一个不存在的字段。我创建了“完整”字段,将其设置为非空 bool 值并再次尝试。

我再次将其自动设置为 true,因此我尝试在 create 方法中将其显式设置为 false,但这仍然不起作用:S,因此我尝试将隐藏字段放入表单中。即使提供了值,我现在也收到“列不能为空”错误。

如您所见,完整值显然有一个参数。我错过了什么?

错误:

Mysql::Error: Column 'complete' cannot be null: INSERT INTO `decommissions` (`completed_at`, `keep_backups`, `services_stopped`, `updated_at`, `operating_system_id`, `comments`, `username`, `disposition`, `stakeholder_email`, `complete`, `alias`, `storage`, `model_id`, `contract_maintenance`, `created_at`) VALUES(NULL, 1, 1, '2010-10-18 00:32:37', 1, NULL, NULL, '', 'test@qut.edu.au', NULL, 'test1', '', 1, '', '2010-10-18 00:32:37')

参数:
{"decommission"=>{"dns_items_attributes"=>{"0"=>{"ip"=>"131.181.185.111",
"alias"=>"test",
"retain"=>"1",
"_destroy"=>""}},
"keep_backups"=>"1",
"services_stopped"=>"1",
"operating_system_id"=>"1",
"stakeholder_email"=>"test@qut.edu.au",
"alias"=>"test1",
"model_id"=>"1"},
"commit"=>"Submit",
"authenticity_token"=>"cMMf0zS/5jPExlXqVPaYVXndqPeVkm+OQ/WEPIYd2+g=",
"disposition"=>"Dispose",
"complete"=>"false",
"storage"=>"Local",
"contract_maintenance"=>"0"}

当我将以下内容放入我的创建 Controller 时,它呈现“真”:
@decommission = Decommission.new(params[:decommission])
@decommission.complete = false
render :text => @decommission.complete

最佳答案

您可能已经强制执行了一个数据库约束,即该列不能包含 NULL通过迁移中的某些东西来实现值(value),例如:
add_column :decommissions, :complete, :boolean, :null => false
您可能还希望列的默认值为 false而不是 NULL
我个人习惯于每次添加 bool 列以始终设置 :default => false (或 true),这有助于避免在范围等中检查 true 或 false 的逻辑错误,忘记值有时可能为空,如果你没有设置正确。

您可以确认这是来自 mysql 提示的问题:

mysql> show indexes from decommissions;

应该有一个索引 Non_unique设置为 0 和 Column_name的完整。

要解决此问题,您可以添加迁移执行:
change_column_default(:decommissions, :complete, false)

关于ruby-on-rails - rails 列不能为空 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955953/

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