2013-01-20 43 views
0

我設置了一個聯繫人模塊,基本上設置它,使聯繫人可以有無限的聯繫方式,即x電話號碼,電子郵件,地址等我設置了兩個不同的表希爾一個是接觸底座的細節,另一種認爲只是聯繫方式,例如:質量分配錯誤與SIngle表繼承情況

Contact 
NAME|DETAILS|COUNTRY .... 

ContactDetails 
TYPE|LOCATION|DETAILS 
enter code here 

其中type可以是電話,傳真,電子郵件和位置可以是「工作」,「官」,「直接'和細節是實際的號碼或電子郵件。

我最初設置了一個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 

我設置了一個表格,使用上railscasts嵌套表格教程,基本上我的形式但是是進入公司對象,它是跟類的子類。聯繫方式與聯繫人類別相關聯,因此我假設如果聯繫人具有聯繫人詳細信息,那麼作爲聯繫人子公司的公司也應具有聯繫人詳細信息。我的形式設置非常好的但是當我提交表單,我收到了Can't mass-assign protected attributes: contact_details_attributes error.

我不太清楚有什麼打算錯在這裏 - 我已經設置了attributes_accessible,因爲他們應該是在上面的代碼 - 什麼在這裏失蹤?

回答

1

您是否嘗試過在公司類中使用accepted_nested_attributes?或將contact_details_attributes添加到基類中的attr_accessible列表中

+0

做到這一點 - 但後來我得到沒有這樣的關係中存在的錯誤... – Ali

+0

沒有等一下 - 是一個錯字:)現在它工作的感謝! – Ali

1

type是activerecord中的保留屬性。你仍然可以使用它通過設置

self.inheritance_column = :kind # or provide another name 
+0

我知道這一點,我試圖利用它基本上電話從聯繫人詳細信息基類繼承 – Ali