HABTM:创建并链接到现有数据

时间:2013-06-04 02:00:30

标签: ruby-on-rails-3 has-and-belongs-to-many

更新:我很抱歉。试图解决这个问题需要花费数小时才能解决问题。当然,“HABTM Checkboxes”的railscast是这篇文章的正确答案。正如丹妮所说。谢谢。


我要进入Ruby和Rails并遇到一个我无法修复的问题。

我在数据库中有三个表:employeesdepartments和join-table departments_employees

我使用has_and_belongs_to_many关系:

#models/employee.rb
class Employee < ActiveRecord::Base
   has_and_belongs_to_many :departments
   accepts_nested_attributes_for :departments, :allow_destroy => true
   attr_accessible :last_name, :first_name, :middle_name, :departments_attributes
end

# models/department.rb
class Department < ActiveRecord::Base
  has_and_belongs_to_many :employees
  attr_accessible :title
end

我的问题是我不知道如何创建新员工,将其链接到现有部门,而不是同时创建新部门。

示例:

Employee.create(:last_name => "Smith",
                :departments_attributes => [{:title => "IT"}])

但这会创造员工和部门。

这里有什么魔法吗?

1 个答案:

答案 0 :(得分:1)

一种方法是删除

accepts_nested_attributes_for

创建一个控制器和视图以进入部门(您可以支持这个)并使用habtm创建雇主并通过复选框为他们分配部门。

对于habtm,请查看railscast