0

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_tounknown 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

4

0 に答える 0