我整理了一张图表来帮助解释这个问题:http: //i.imgur.com/ZnN1X.png
基本上,在我的“新员工”表单上,我目前有一个员工姓名输入字段,以及一个列出所有公司的选择框。如果我选择一家公司并点击Go,它会在“就业”中创建一个新记录。到现在为止还挺好。
我的问题是,在选择公司时,还需要在“就业”模型中设置类型,该模型链接到“就业类型”模型。理想情况下,这样我就可以拥有两种不同类型的工作 - 但两者都列出了相同的公司。
在此先感谢,任何帮助将不胜感激!
我整理了一张图表来帮助解释这个问题:http: //i.imgur.com/ZnN1X.png
基本上,在我的“新员工”表单上,我目前有一个员工姓名输入字段,以及一个列出所有公司的选择框。如果我选择一家公司并点击Go,它会在“就业”中创建一个新记录。到现在为止还挺好。
我的问题是,在选择公司时,还需要在“就业”模型中设置类型,该模型链接到“就业类型”模型。理想情况下,这样我就可以拥有两种不同类型的工作 - 但两者都列出了相同的公司。
在此先感谢,任何帮助将不胜感激!
不确定我是否完全理解你的问题,但我会试一试。
员工模型:
has_many :employments, :dependent => :destroy
has_many :companies; :through=>employments
has_many :employment_types, :through=>employments
公司型号:
has_many :employments
has_many :employees; :through=>employments
has_many :employment_types, :through=>employments
就业类型模型:
has_many :employments
has_many :companies; :through=>employments
has_many :employees; :through=>employments
就业模式:
belongs_to :employee
belongs_to :company
belongs_to :employment_type
查看代码:
<%= form_for @employee do |f| %>
<%= f.text_field :name %>
<% 2.times do %>
<%= f.fields_for :employments, @employee.employments.build do |employment_fields| %>
<%= f.select :company_id, options_from_collection_for_select(Company.all, 'id', 'name') %>
<%= f.select :employment_type_id, options_from_collection_for_select(EmploymentType.all, 'id', 'name') %>
<% end %>
<% end %>
<% end %>
在您的图表中,您将 ID 字段设置为非标准 (model_id),rails 通常更喜欢这些字段只是 id。但是您可以通过将其添加到每个模型来覆盖默认主键:
set_primary_key <symbol representing primary key>