多形関連でAddress
モデルを作成しましたが、クライアントモデルのネストされたアトリビュートで保存しようとしていますが、にAddress addressable must exist
があります。Rails 5でポリモーフィックアソシエーションを持つネストされたアトリビュート
モデル:
class Client < ApplicationRecord
has_one :address, as: :addressable, dependent: :destroy
accepts_nested_attributes_for :address, :allow_destroy => true
end
class Address < ApplicationRecord
belongs_to :addressable, polymorphic: true
end
コントローラー:
class ClientsController < ApplicationController
def new
@client = Client.new
@client.create_address
end
def create
@client = Client.new(client_params)
if @client.save
...
else
...
end
end
private
def client_params
params.require(:client).permit(:first_name ,:last_name, :company, address_attributes: [:line1, :line2, :line3, :city, :state_province, :postal_code, :country])
end
end
このコードは問題の解決に役立つかもしれませんが、_why_および/または_how_が質問に答えているとは説明していません。この追加の文脈を提供することは、長期的な教育的価値を大幅に改善するだろう。どのような制限や仮定が適用されるかなど、あなたの答えを解説してください。 –
この回答は受け入れられるべきです。 –
ここにいくつかの文脈があります:[this](https://github.com/rails/rails/issues/23960)と[this](https://github.com/rails/rails/issues/29781)を参照してください。 バグのように聞こえます: 'belongs_to'バリデーターは空の関連に遭遇する' polymorphic:true'の前に*実行されます。 – David