У нас есть простое приложение, мы создали следующие модели:
class Cliente < ApplicationRecord
has_and_belongs_to_many :hardware
end
и
class Hardware < ApplicationRecord
has_and_belongs_to_many :clientes
end
Мы создали промежуточную таблицу под названием «clientes_hardwares», когда мы назначаем оборудование клиенту, мы хотим установить другое поле в таблице под названием «vigencia», таблица:
На нашем контроллере мы установили:
def sethardware
@cliente = Cliente.find(params[:cliente_id])
@cliente.hardware << Hardware.find(params[:hardware_id])
@cliente.hardware.build(:vigencia => "2018-01-01")
if @cliente.save
flash[:info] = 'Cliente creado correctamente'
redirect_to action: 'show', id: params[:cliente_id]
else
flash[:alert] = 'Error al crear el usuario'
redirect_to action: 'show', id: params[:cliente_id]
end
end
Без этой строки:
@cliente.hardware.build(:vigencia => "2018-01-01")
Он работает и устанавливает client_id и hardware_id, как мы можем установить дополнительное поле с именем "vigencia", потому что если мы вызываем like build и like param, это показывает, что у оборудования нет этого атрибута?
Привет