私は、次のモデルがあります:Ruby on Rails:関連モデルの作成方法
class Product < ActiveRecord::Base
belongs_to :brand
belongs_to :model
accepts_nested_attributes_for :brand, :model
...
end
class Brand < ActiveRecord::Base
has_many :products
has_many :models
...
end
class Model < ActiveRecord::Base
has_many :products
belongs_to :brand
accepts_nested_attributes_for :brand
...
end
私は新製品を作成するために問題を抱えています。
"brand_attributes"=>{"name"=>"my_new_brand"}
"model_attributes"=>{"model_no"=>"my_new_model"}
を、私は次のエラーを得た:
class ProductsController < ApplicationController
...
def create
@product = Product.new(params[:product])
if @product.save ... # Here is the error
end
...
end
ユーザーが新ブランドや新モデルを追加し、params[:product]
には次のものが含まれます。ここでは
Mysql2::Error: Column 'brand_id' cannot be null: INSERT INTO `models` ...
モデルには外部キーbrand_id
があるためこれは設定されていません。ブランド(モデルのような)は、製品が作成されたときに即座に作成されるため、設定できません。私は製品の前にブランドを作成したくない、私は製品にエラーがあるので、私は作成されたブランドを削除する必要があります。
は、その後、私はこのようparams[:product]
を変更しようとしました:
"brand_attributes"=>{"name"=>"my_new_brand",
"model_attributes"=>{"model_no"=>"my_new_model"}}
が、私はこれで終わる:これを処理する適切な方法は何でしょう
unknown attribute: model_attributes
?
ありがとうございます。私はそれを試してみます:) –
問題ありません。お力になれて、嬉しいです – sethvargo