2013-04-16 88 views
0

我有一个复选框列表,用户可以在其中为项目选择一个或多个组织。这是一个有很多通过关联。如何为有很多通过关联的记录创建新记录

但我也想加一个文本框,上面写着Add Other因此用户还可以创建一个新的组织并将其分配给该项目自动

project.rb

has_many :organizationables 
has_many :organizations, through: :organizationables 
attr_accessible :organization_ids 

organization.rb

attr_accessible :name, :website 
has_many :organizationables 
has_many :projects, through: :organizationable 

organizationable.rb

attr_accessible :organization_id, :project_id 
belongs_to :organization 
belongs_to :project 

我知道我对于这个协会的组织来说,这是一个奇怪的名字,但是哦。我尝试过不同的方法来设置表单,但我无法完成工作。

新项目FORM应该有地方机构可以被分配到一个项目的复选框,但也将有一个Other Organization文本字段(这将创造一个新的组织,并将其分配给项目)。

+0

你考虑过使用[cocoon gem](https://github.com/nathanvda/cocoon)吗? – PinnyM

+0

我正在使用简单的窗体,但我不知道如何去做我想达到的目标。 – leonel

+0

茧与简单形式(或Formtastic或标准形式)工作 - 检查出来。我认为你的加入模型的一个更合理的名称将是'可组织的'... – PinnyM

回答

0

假设在一个动作要创建新的组织和准到现有的项目,这里是最简单的方法:

new_organization.save! 
project.organizations << new_organization 

,将创建并保存organizationable纪录新联项目组织。

更新:

首先保存新项目。然后建立他们检查的一系列组织。如果他们创建了一个组织,请保存并将其添加到数组中。随后扳平组织名单的项目一举:

project.organizations = my_list_of_checked_organizations 

一个类似的例子见http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

+0

这不起作用,你不能更新'has_many:through'关联,它是只读的。 –

+0

我想在新建项目表单中创建新组织。他们可以使用复选框将组织分配给项目,也可以填写“其他组织”字段(这将创建一个新组织) – leonel

+0

Mauricio,我的第一个使用'<<'的示例绝对有效。它对数据库的影响是将记录添加到连接表中,而不是添加到组织表中,但这样做会增加project.organizations集合。非常简单直接。 – sockmonk

相关问题