有关系:
(我的代码是葡萄牙语)
顺序
class Pedido < ActiveRecord::Base
belongs_to :pessoa
人
class Pessoa < ActiveRecord::Base
belongs_to :usuario
has_many :enderecos
has_many :pedidos
accepts_nested_attributes_for :enderecos
end
用户
class Usuario < ActiveRecord::Base
has_many :pessoas
has_many :pedidos, through: :pessoas
end
carrinhos_controller.rb
def checkout
@pedido = current_usuario.pedidos.build
end
在迁移Person
中有usuario_id
,Order
有pessoa_id
和其他人......
当我完成一个订单时,pessoa_id
为空并且不保存在数据库上,为什么??
更多代码: pedidos_controller.rb
class PedidosController < ApplicationController
before_action :authenticate_usuario!
# Criar pedido
def create
@pedido = current_usuario.pedidos.build(pedido_params)
if @pedido.save
@pedido.construir_cache_item_carrinho(carrinho_atual)
@pedido.calcular_total!(carrinho_atual)
carrinho_atual.limpar!
#OrdemDeServico.new(carrinho_atual, @pedido).encomendar_pedido!
redirect_to pedido_path(@pedido.token)
else
render "carrinho/checkout"
end
end
答案 0 :(得分:2)
使用此代码:
def checkout
@pedido = current_usuario.pedidos.build
@pedido.save
end
如果您使用的是build
或new
,则必须使用save
方法。否则,您可以使用直接create
方法。
答案 1 :(得分:0)
build
无法保存到数据库。之后保存(@pedido.save
)或尝试@pedido = current_usuario.pedidos.create
答案 2 :(得分:0)
我想您使用的是嵌套表单之类的内容来发布参数。我经常使用nested_form gem by Ryan Bates。
如果您仔细考虑使用情况,可以找到一些有用的见解。 还要注意 strong_parameters :需要在控制器中声明你想要允许的参数。