我不理解Rails模型在使用复数或非复数建立关系时是如何工作的。
示例:
我们有一个叫“客户”的模型。
class Cliente < ApplicationRecord
has_many :sucursales
end
MySQL上的表为:
我们有一个叫做“Sucursale”的模型:
class Sucursale < ApplicationRecord
belongs_to :cliente
end
该表为:
在表sucursale上,已经有了通过迁移“t.belongs_to:clientes,index:”创建的“clientes_id”。没错。
在我们简单的crud,我们想创建一个新的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.
我们错过了什么吗?
1条答案
按热度按时间rryofs0p1#
Sucursale的未知属性“cliente_id”。
问题是
t.belongs_to :clientes, index: true
将列名生成为clientes_id
而不是cliente_id
解决方案:
您可以选择回滚迁移,将迁移文件中的代码编辑为
并再次迁移它。
如果您选择不回滚迁移,则在关联上指定自定义
foreign_key
以覆盖Rails的默认行为。