gpt4 book ai didi

ruby-on-rails - Rails 构建 belongs_to 关联 "must exist"错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:57 25 4
gpt4 key购买 nike

我正在尝试在 Rails 的 belongs_to 模型关联中构建一个 has_many 模型。该关联是正确的,但它显示错误“必须存在”。我尝试将 optional: true 放入,但它似乎不起作用。

模型

class User::Product < ApplicationRecord
has_one: :promo_code
end

class User::PromoCode < ApplicationRecord
belongs_to: :product, optional: true
accepts_nested_attributes_for :product
end

促销代码 Controller

def new
@promo_code = User::PromoCode.new
@product.build_product
end

def create
@promo_code = User::PromoCode.new(promo_code_params)
@promo_code.save
end

def promo_code_params
params.require(:user_promo_code).permit(:product_id, :product_attributes => [:name])
end

表单

form_with(model: promo_code) do |form|
form.fields_for :product do |f|
f.text_field :name
end
end

当表单保存时出现错误“必须存在”,我假设这是指 belongs_to 中的外键。

有什么我可能做错的想法吗?我认为上面的代码是我拥有的关于此问题的唯一相关代码。

最佳答案

查看@engineersmnky 链接的问题,看起来这是使用 accepts_nested_attributes_for 时的已知错误。

这可以通过使用inverse_of 选项来阐明双向关系来解决:

class User::Product < ApplicationRecord
has_one: :promo_code, inverse_of: :product
end

class User::PromoCode < ApplicationRecord
belongs_to: :product, optional: true, inverse_of: :promo_code
accepts_nested_attributes_for :product
end

尝试一下,看看它是否能解决您的问题。

关于ruby-on-rails - Rails 构建 belongs_to 关联 "must exist"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897548/

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