在Rails 4.0中选择标记和多对多关系

时间:2014-07-07 04:23:34

标签: mysql ruby-on-rails ruby ruby-on-rails-4

在我的项目中我有2个型号 Employee.rb

class Employee < ActiveRecord::Base
  has_many :shop
  ..
  ..
  ..
end

和Shop.rb

class Shop < ActiveRecord::Base
  has_many :employees
  ..
  ..
  ..
end

我不确定这种关系是否正确。工作应该是这样的。 员工获得了一个在许多表中使用的外键employeeID。 如果一名员工拥有超过4家商店,那么同一员工的4个条目将在员工表中(employeeID将对所有员工都相同),依此类推。 现在我的问题是我有一个更新员工详细信息的表单。表单用于创建和编辑员工详细信息。 我想在这个表格中放置一个选择标签,显示所有商店。在编辑页面上,应该预先选择属于该用户的商店..

怎么做?帮助

1 个答案:

答案 0 :(得分:1)

您应该使用has_and_belongs_to_many关联:

enter image description here

-

拥有并属于许多人

这意味着要创建一个新表:

#employees_shops
employee_id | shop_id

然后,您可以使用has_and_belongs_to_many声明关联这两个模型:

#app/models/employee.rb
Class Employee < ActiveRecord::Base
    has_and_belongs_to_many :shops
end

#app/models/shop.rb
Class Shop < ActiveRecord::Base
    has_and_belongs_to_many :employees
end

这将允许您致电:

@shop.employees.each do |employee|
    employee.name
end