当您设置具有复数或非复数关系时,我不想理解该模型在轨道上的工作原理。
示例:
我们有一个称为“ Cliente”的模型。
class Cliente < ApplicationRecord
has_many :sucursales
end
MySQL上的表是:
我们有一个名为“ Sucursale”的模型:
class Sucursale < ApplicationRecord
belongs_to :cliente
end
表为:
在表sucursale上已经具有通过迁移“ t.belongs_to:clientes,索引:true”创建的“ clientes_id”。
在我们简单的任务上,我们想使用以下客户关系创建新的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.
我们错过了什么吗?
提前考虑。
答案 0 :(得分:1)
Sucursale的未知属性“ cliente_id”。
问题是t.belongs_to :clientes, index: true
生成的列名称为clientes_id
不是 cliente_id
解决方案:
您可以选择回滚迁移,将迁移文件中的代码编辑为
t.belongs_to :cliente, index: true
然后再次迁移。
OR
如果选择不回滚迁移,则在关联上指定自定义foreign_key
以覆盖Rails的默认行为。
class Cliente < ApplicationRecord
has_many :sucursales, foreign_key: :clientes_id
end