gpt4 book ai didi

ruby-on-rails - 如何使关联在已构建和未保存的对象中起作用?

转载 作者:行者123 更新时间:2023-12-04 02:12:32 24 4
gpt4 key购买 nike

假设我有类似的东西:

@order = Order.new(status: :pending)

@item = @order.items.build(title: "Shirt")

当我尝试调用 @item.order ,我得到一个未找到的错误,我想这是因为它仍然没有保存到数据库中,但是如何使它指向构建的对象而不保存任何对象呢?
@item.order # Not Found - Tries to fetch from the DB

最佳答案

要完成这项工作,您必须告诉 order您的项目模型的关联,它是您的 items 的倒数关联或您订购模型,反之亦然:

像这样:

class Item < ActiveRecord::Base
belongs_to :order, inverse_of: :items
end

class Order < ActiveRecord::Base
has_many :items, inverse_of: :order
end

这样,即使在保存到数据库之前,您的关联也将正确设置。

编辑:如果您不想要这个,您可以随时明确分配关联:
@item = @order.items.build(title: "Shirt")
@item.order = @order

或在一行中:
@item = @order.items.build(title: "Shirt", order: @order)

关于ruby-on-rails - 如何使关联在已构建和未保存的对象中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com