ruby-on-rails - Rails 模型错误未知属性在保存时使用 belongs_to 和 has_many
问题描述
当您设置复数或非复数关系时,我不了解模型在轨道上的工作原理。
例子:
我们有这个模型叫做“Cliente”。
class Cliente < ApplicationRecord
has_many :sucursales
end
MySQL上的表是:
我们有一个名为“Sucursale”的模型:
class Sucursale < ApplicationRecord
belongs_to :cliente
end
表格是:
在表 sucursale 上已经有“clientes_id”,它是通过迁移“t.belongs_to :clientes, index: true”创建的。
在我们简单的基础上,我们想创建一个新的 Sucursale 与客户关系:
def create
@sucursalcliente = Cliente.find(params[:clientes_id])
@sucursalcliente.sucursales.build(
:nombre => params[:nombre],
:calle => params[:calle],
:numero_interior => params[:numero_interior],
:numero_exterior => params[:numero_exterior],
:colonia => params[:colonia],
:municipio => params[:municipio],
:estado => params[:estado],
:pais => params[:pais],
:codigo_postal => params[:codigo_postal],
:email => params[:email],
:telefono => params[:telefono]
)])
if @sucursalcliente.save
flash[:info] = 'Sucursal creado correctamente'
redirect_to action: 'index'
else
flash[:alert] = 'Error al crear la sucursal'
redirect_to action: 'index'
end
end
但是当我们运行该脚本时,我们得到了。
unknown attribute 'cliente_id' for Sucursale.
我们错过了什么吗?
提前问候。
解决方案
Sucursale 的未知属性“cliente_id”。
问题是t.belongs_to :clientes, index: true
生成的列名clientes_id
不是 cliente_id
解决方案:
您可以选择回滚迁移,将迁移文件中的代码编辑为
t.belongs_to :cliente, index: true
并再次迁移它。
或者
如果您选择不回滚迁移,则foreign_key
在关联上指定自定义以覆盖 Rails 的默认行为。
class Cliente < ApplicationRecord
has_many :sucursales, foreign_key: :clientes_id
end
推荐阅读
- xcode - 如何提取 iOS CFBundleVersion 和 CFBundleShortVersionString 变量?
- c# - StringFormat 不会在 WPF 中的数据网格内格式化日期(字符串数据类型)
- automated-tests - 无法在 Katalon Studio 上使用特定配置文件打开 Chrome
- solr - 如何在solr中将多词同义词作为单个实体?
- javascript - 如果其中一个键相同,则收集数组下的数组元素
- python - 在python中创建一个不规则的锯齿函数
- haskell - Tuples 里面的 Tuples 类型不同还是相似?
- sql-server - 尝试查询 XML 数据 - 节点中有一个空格
- codeigniter-3 - GroceryCRUD 隐藏软删除记录
- angularjs - Karma+AngularJS - 结合模板和控制器