mysql - 无法添加或更新子行:外键约束失败 - Ruby on Rails
问题描述
我的“子”表单包含以下选择:
<%= child.select :parent_id, options_for_select(Parent.all.map{ |parent| parent.grandparent.name + " - " + parent.name }, {:include_blank => true}) %>
在“更新”操作中,我收到以下错误:
Cannot add or update a child row: a foreign key constraint fails (`database_name`.`childs`, CONSTRAINT `fk_part2_5` FOREIGN KEY (`parent_id`) REFERENCES `parents` (`id`))
模型看起来像这样:
class Child < ApplicationRecord
belongs_to :parent
end
class Parent < ApplicationRecord
has_many :childs, :dependent => :delete_all
end
class GrandParent < ApplicationRecord
has_many :parents, :dependent => :delete_all
end
解决方案
弄清楚了。这是我的选择表格错误。各个选择选项的实际值不是 ID,因此无法更新表。想出来是这样的:
<%= child.collection_select(:parent_id, Parent.all, :id, :parent_with_grandparent_name) %>
class Parent < ActiveRecord::Base
has_many :childs, :dependent => :delete_all
belongs_to :grandparent
def parent_with_grandparent_name
grandparent.name + " - " + name
end
end
推荐阅读
- c++11 - suse linux中regcomp()中的分段错误
- xml - 需要删除创建的空元素并添加列表
- flutter - 如何在 Flutter 的 showModalBottomSheet 上添加按钮(或其他 Widget)?
- python - 基于 JSON 字典键的 CSV 标头
- ios - 如何最大化 TableViewCell 反应绑定性能?
- python - SyntaxError:python3 中的语法无效 astype('float32')[:limit]
- ios - PHFetchResultChangeDetails 的“hasIncrementalChanges”何时等于 NO?
- php - 我想在 if 条件下将两个日期与当前日期进行比较
- vue.js - 如何在注册的 vue-router 组件之外的组件中获取 $auth 值
- kubernetes - Kubectl 从远程机器获取 pod,访问 AWS EC2 实例上的 Minikube 单节点集群