Rails 4 では、次のような has_many 関係があります。
class Company::Appointment < ActiveRecord::Base
has_many :company_appointment_extras, class_name: "Company::Appointment::Extra"
accepts_nested_attributes_for :company_appointment_extras
end
class Company::Appointment::Extra < ActiveRecord::Base
belongs_to :company_appointment, class_name: "Company::Appointment"
end
ユーザーは、ネストされたフォームを使用してこれらのオブジェクトを同時に作成します。データベースに書き込むまですべてが機能しますが、その時点で次のエラーが発生します。
can't write unknown attribute `appointment_id'
最初はエラーが からスローされていると思いましたが、減速にCompany::Appointment::Extra
追加しようとするとエラーが発生し続けました。つまり、エラーはその関係から発生したものではありませんでした。foreign_key: "company_appointment_id"
belongs_to
unknown attribute 'appointment_id'
実際、コンソールを見ると、Company::Appointment
自分自身を書いているときに実際にエラーが発生しているようです。
SQL (1.0ms) INSERT INTO "company_appointments" ("company_id", "created_at", "date", "total", "updated_at", "user_property_id") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["company_id", 1], ["created_at", Thu, 05 Sep 2013 04:58:19 UTC +00:00], ["date", Fri, 06 Sep 2013 00:00:00 UTC +00:00], ["total", #<BigDecimal:6ac2118,'0.55E2',9(27)>], ["updated_at", Thu, 05 Sep 2013 04:58:19 UTC +00:00], ["user_property_id", 1]]
(0.3ms) ROLLBACK
Completed 500 Internal Server Error in 452ms
なぜこれが起こっているのですか?
編集:
移行で宣言することを明確にする必要があります: t.integer :company_appointment_id, null: false
. キーは、実際にはcompany_appointment_id
、ではありませんappointment_id
。