gpt4 book ai didi

ruby-on-rails - 带有 accepts_the_nested_attributes 的 belongs_to 不在对象中保存外键

转载 作者:数据小太阳 更新时间:2023-10-29 09:01:31 24 4
gpt4 key购买 nike

我有一个名为 Profile 的模型,它与 Addressbelongs_to 关系

class Profile < ActiveRecord::Base

belongs_to :address, dependent: :destroy
accepts_nested_attributes_for :address, allow_destroy: true

Controller 中的代码

 def create
@profile = Profile.new(profile_signup_params)
@profile.save
respond_to
..... etc.....
end

参数

def profile_signup_params
params.require(:profile).permit( { address_attributes: [:country]
end

但是@profile.save

我得到这个对象

#<MemberProfile:0x0000000af135b0
id: 28,
address_id: nil,
birth_date: nil,
country_code: nil,
phone: nil,
stripe_customer_id: "123",
created_at: some time,
updated_at: some time>

如您所见,address_idnil

配置文件 已创建地址被创建

但是 Address 没有分配给 Profile

请帮帮我,我做错了什么

最佳答案

我认为您在 Address 和 Profile 之间建立了错误的关联

Profile which has belongs_to relation with Address instead 它应该是 Profile has has_one association respect to 地址

如官方文档中所述 Active Record Nested Attributes

class Profile < ActiveRecord::Base

has_one :address, dependent: :destroy
accepts_nested_attributes_for :address, allow_destroy: true
...
end

class Address < ActiveRecord::Base
belongs_to :profile
end

Rest Controller 和模型代码在您的情况下是相同的,除了您需要 AddressProfile 之间的主外键关系;需要在地址表中创建 profile_id 列。

注意:确保是否有您需要遵循的唯一性Uniqueness Gotcha!!! in ActiveRecord NestedAttributes.

原创博客 Uniqueness Gotcha!!! Problem and Solution

希望这对你有帮助!!!

关于ruby-on-rails - 带有 accepts_the_nested_attributes 的 belongs_to 不在对象中保存外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34365081/

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