{ "loan-6ren">
gpt4 book ai didi

ruby-on-rails - 多态关联和嵌套属性 : :error=>:blank

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

我正在尝试保存一个深度嵌套的表单。共有三种不同的模型:申请、申请人和地址。地址是多态的,因为应用程序和申请人都可以拥有它们。这些是我发送的参数:

{"application"=>{
"loan_type"=>"purchase",
"loan_amount"=>2500000,
"borrower_attributes"=>{
"first_name"=>"Test",
"middle_name"=>"Test",
"last_name"=>"Test",
"birthdate"=>"01/01/1970",
"phone"=>"1231231234",
"email"=>"test@me.com",
"marital_status"=>"married",
"address_attributes"=>{
"street_address"=>"xxxx Mission Street",
"city"=>"San Francisco",
"state"=>"CA",
"zip"=>xxxxx
}
}
}}

当这在我的请求中发送时,我收到以下响应:
<Address id: nil, street_address: "1045 Mission Street", city: "San Francisco", state: "CA", zip: 94103, addressable_type: "Applicant", addressable_id: nil, created_at: nil, updated_at: nil>

以及以下错误消息:
@messages={:"borrower.address.addressable"=>["must exist"]}, @details={"borrower.address.addressable"=>[{:error=>:blank}]}

为什么我不能设置嵌套属性?我需要解决什么问题才能完成这项工作?

这是我的相关文件:

申请.rb
class Application < ApplicationRecord
before_save :assign_addresses!
belongs_to :borrower, class_name: 'Applicant'
belongs_to :coborrower, class_name: 'Applicant', optional: true
has_one :address, as: :addressable

accepts_nested_attributes_for :borrower
accepts_nested_attributes_for :coborrower
accepts_nested_attributes_for :address
end

申请人.rb
class Applicant < ApplicationRecord
has_many :applications
has_one :address, as: :addressable
validates_presence_of :first_name, :last_name, :phone, :email, :birthdate

accepts_nested_attributes_for :address
end

地址.rb
class Address < ApplicationRecord
belongs_to :addressable, polymorphic: true
validates_presence_of :street_address, :city, :state, :zip
end

Applications_Controller.rb
class Api::ApplicationsController < ApplicationController

...

def create
@application = Application.new(application_params)

if @application.save
render json: @application, status: :created
else
render json: @application.errors, status: :unprocessable_entity
end
end

private

def application_params
params.require(:application).permit(:loan_type, :loan_amount, borrower_attributes: [:first_name, :middle_name, :last_name, :birthdate, :phone, :email, :ssn, :marital_status, address_attributes: [:street_address, :city, :state, :zip]])
end
end

最佳答案

发现问题。添加 optional: true 后一切正常到 Address belongs_to .这是一个新的 Rails 5 约定。我记得把它放在我的共同借款人身上,但没有放在那里。希望这可以帮助某人!

关于ruby-on-rails - 多态关联和嵌套属性 : :error=>:blank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282238/

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