0

問題の説明に役立つ図をまとめました: http://i.imgur.com/ZnN1X.png

基本的に、「新入社員」フォームには、現在、従業員名の入力フィールドと、すべての会社を一覧表示する選択ボックスがあります。会社を選んでGOを押すと「雇用」に新記録ができます。ここまでは順調ですね。

私の問題は、会社を選択するときに、「雇用タイプ」モデルにリンクする「雇用」モデルにもタイプを設定する必要があることです。理想的には、2 つの異なるタイプの雇用を持つことができますが、どちらも同じ会社をリストしています。

事前に感謝します。どんな助けでも大歓迎です!

4

1 に答える 1

1

あなたの質問を完全に理解できるかどうかはわかりませんが、それを試してみます。

従業員モデル:

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>
于 2012-04-11T15:58:52.550 に答える