私は連絡先モジュールを設定していて、基本的に連絡先が無制限の連絡先の詳細(x電話番号、電子メール、アドレスなど)を持つことができるように設定しています。1つは連絡先ベースの詳細用で、もう1つは、次のような連絡先の詳細のみを保持します。
Contact
NAME|DETAILS|COUNTRY ....
ContactDetails
TYPE|LOCATION|DETAILS
enter code here
タイプは電話、ファックス、電子メールで、場所は「職場」、「公式」、「直接」で、詳細は実際の番号または電子メールです。
私は最初にcontact_detailsモデルを設定し、後で電話、ファックス、電子メールと呼ばれるモデルなど、contact_detailごとに異なるモデルを設定することを考えました。それぞれがcontact_detailsから継承します。
これが私の現在のモデルです:
class Contact < ActiveRecord::Base
acts_as_citier
attr_accessible :about, :name, :type
has_many :contact_details
accepts_nested_attributes_for :contact_details
end
class Company < Contact
attr_accessible :company_name, :description, :timezone, :website, :twenty_four_ops, :type
acts_as_citier
before_save :set_parent_attributes
####
end
# this is the contact etail which corresponds to either a phone, email or fax etc
class ContactDetail < ActiveRecord::Base
attr_accessible :contact_id, :type, :details, :location
belongs_to :contact
end
The phone and fax classes
class Phone < ContactDetail
end
class Fax < ContactDetail
end
railscastのネストされたフォームのチュートリアルを使用してフォームを設定しましたが、基本的に私のフォームは、Contactクラスの子であるCOMPANYオブジェクトを入力するためのものです。連絡先の詳細は連絡先クラスに関連付けられているため、連絡先に連絡先の詳細がある場合は、連絡先の子である会社にも連絡先の詳細があるはずです。私のフォームはかなりうまく設定されていますが、フォームを送信すると、Can't mass-assign protected attributes: contact_details_attributes error.
ここで何がうまくいかないのかよくわかりません-上記のコードにあるはずのattributes_accessibleを設定しました-ここに何が欠けていますか?