あなたの質問を完全に理解できるかどうかはわかりませんが、それを試してみます。
従業員モデル:
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 %>
あなたの図では、非標準(model_id)としてIDフィールドがあり、railsは通常これらを単にidにすることを好みます。ただし、これを各モデルに追加することで、デフォルトの主キーを無効にすることができます。
set_primary_key <symbol representing primary key>