如何通过关联为has_many创建新记录

时间:2013-04-16 21:52:43

标签: ruby-on-rails associations

我有一个复选框列表,人们可以为项目选择一个或多个组织。这是一个很多通过协会。

但我还想添加一个显示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

我知道这是协会'组织机构'的一个奇怪名称,但是哦。我已经尝试了不同的方法来设置表单,但我无法使其工作。

新项目表格应该有复选框,可以将组织分配给项目,但也会有Other Organization文本字段(将创建新组织并将其分配给项目)。

1 个答案:

答案 0 :(得分:0)

假设您想在一个操作中创建新组织并与现有项目关联,这是最简单的方法:

new_organization.save!
project.organizations << new_organization

这将创建并保存将项目与新组织相关联的可组织记录。

更新:

首先保存新项目。然后设置他们检查的组织数组。如果他们创建了一个组织,请将其保存并添加到阵列中。然后一举将组织清单与项目联系起来:

project.organizations = my_list_of_checked_organizations

有关类似示例,请参阅http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association