0

私は連絡先モジュールを設定していて、基本的に連絡先が無制限の連絡先の詳細(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を設定しました-ここに何が欠けていますか?

4

2 に答える 2

1

会社のクラスでaccepts_nested_attributesを試しましたか?または、基本クラスのattr_accessibleリストにcontact_details_attributesを追加します

于 2013-01-20T15:23:28.847 に答える
1

typeactiverecordの予約済み属性です。設定することで引き続き使用できます

self.inheritance_column = :kind # or provide another name
于 2013-01-20T15:35:09.240 に答える