在保存带有Rails_to和has_many的Rails模型错误未知属性

时间:2018-09-04 15:51:15

标签: ruby-on-rails ruby activerecord

当您设置具有复数或非复数关系时,我不想理解该模型在轨道上的工作原理。

示例:

我们有一个称为“ Cliente”的模型。

class Cliente < ApplicationRecord
    has_many :sucursales
end

MySQL上的表是:

enter image description here

我们有一个名为“ Sucursale”的模型:

class Sucursale < ApplicationRecord
    belongs_to :cliente
end

表为:

enter image description here

在表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.

我们错过了什么吗?

提前考虑。

1 个答案:

答案 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