现在已经两天了,我阅读博客、观看铁路广播、阅读书籍等,但我找不到一个优雅的解决方案来解决我的问题。
上下文:我有多个业务,可以有多个contact_persons。此外,每个企业必须始终有一个主要联系人。所以我通过business_contact_persons 表在business 和contact_person 之间建立了多对多的关系。
class Business < AR
has_many :business_contact_persons, :dependent => :destroy
has_many :contact_persons, :through => :business_contact_persons
class ContactPersons < AR
has_many :business_contact_persons, :dependent => :destroy
has_many :business, :through => :business_contact_persons
class BusinessContactPerson < AR
belongs_to :business
belongs_to :contact_person
#Primary is a boolean in the database
attr_accessible :primary, :contact_id, :business_id
现在,我试图在我的业务视图中实现的是允许用户选择他们想要分配特定业务的每个contact_person,并且选择他们想要成为主要联系人的人。因此,在我的新业务视图中,我可以显示一组复选框,显示所有可用的contact_persons,以及一个带有相同contact_persons 列表的radio_button 组来选择主要的。
为了节省业务,我在我的控制器中使用它:
@business.attributes = params[:business]
它适用于保存 business_contact_persons 因为它访问属性槽
params[:business][:contact_person_ids]
但这不会将我的主要 business_contact_persons 布尔字段分配给用户选择的字段。更糟糕的是,我将如何处理编辑业务,因为用户可以更改业务的主要联系人。
另外,关于如何验证企业是否分配了主要联系人的想法会非常好