我不确定堂兄对象是一个实际的术语,但是与通常的父/子关系一致,这是我能想到的最好的描述。
在我的应用中,我有:
class KeyContact < ActiveRecord::Base
has_many :phone_numbers, dependent: :destroy
has_many :email_addresses, dependent: :destroy
has_many :sale_contacts, dependent: :destroy
has_many :sales_opportunities, :through => :sale_contacts
end
从Key_Contact我也建立了SaleContacts(所以同一个联系人可以参与多个销售机会):
class SaleContact < ActiveRecord::Base
belongs_to :key_contact
belongs_to :sales_opportunity
end
*编辑:Phone_Number模型为清晰起见:
class PhoneNumber < ActiveRecord::Base
validates :number, :key_contact_id, presence: true
belongs_to :key_contact
end
在应用程序中,我使用Bootstrap 3 Modals来托管form_for sale_contact,通过AJAX将其加载到页面中并刷新一些部分内容。所有这些都很有效,并且在新呈现的表格中有一个链接可以将phone_numbers
或email_addresses
添加到SaleContact(显然它实际上将这些对象添加到KeyContact)。
我想要做的是将fields_for :phone_numbers
和:email_addresses
添加到SaleContact表单。我已尝试声明关系(即SaleContact has_many :phone_numbers, :through => :key_contacts
),但由于在模式提交之前尚未为sale_contact设置key_contact(key_contact已存在,但sale_contact),因此无法正常工作尚未保存关系与特定key_contact的关系。
在rails中有一种简单的方法吗?还是我大肆过分复杂化?