私はRailsアプリケーションに取り組んでおり、現在、サブジェクトとレッスンの2つのモデルがあります。科目には、講義、チュートリアル、実験の 3 種類のレッスンがあります。Lessonモデルにhas_oneが3つあるようにモデル化しました。
現在、科目とレッスン用にネストされたフォームを作成しようとしていますが、保存されているレクチャー、チュートリアル、ラボは常にレンダリングされた最初のフォームでした。つまり、レクチャー、チュートリアル、ラボ用に別々に 3 つのネストされたフォームがありますが、保存されたレクチャー、チュートリアル、ラボは常に最初に作成されたものでした。私のコードでは、講義が最初に作成されたため、チュートリアルと実験室の属性は、講義用に入力した属性に従います。
どこが間違っていたのか、この場合に複数の has_one 関係が機能するのかさえわからないので、アドバイスをいただければ幸いです。
関連するコードは次のとおりです。
対象モデル
class Subject < ActiveRecord::Base
  has_one :lecture, :class_name => "Lesson"
  has_one :laboratory,:class_name => "Lesson"
  has_one :tutorial, :class_name => "Lesson"
  accepts_nested_attributes_for :lecture
  accepts_nested_attributes_for :laboratory
  accepts_nested_attributes_for :tutorial 
end
レッスンモデル
class Lesson < ActiveRecord::Base
  belongs_to :subject
end
件名とレッスンのネストされたフォーム
<%= form_for(@subject_list) do |f| %>
  <div class="field">
    <%= f.label :subject_code %><br />
    <%= f.text_field :subject_code %>
  </div>
  <div>
    <%= f.fields_for :lecture do |lecture| %>
      <%= render "lecture_fields", :f => lecture %>
    <% end %>
  </div>
  <div>
    <%= f.fields_for :tutorial do |tutorial| %>
      <%= render "tutorial_fields", :f => tutorial %>
    <% end %>
  </div>
  <div>
    <%= f.fields_for :laboratory do |laboratory| %>
      <%= render "laboratory_fields", :f => laboratory %>
    <% end %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
サブジェクト コントローラの新しいアクション
    def new
    @subject = Subject.new
    lecture = @subject.build_lecture
    laboratory = @subject.build_laboratory
    tutorial = @subject.build_tutorial
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @subject }
    end
  end
どこが間違っているのかを特定するのに誰かが私を助けてくれれば幸いです。このような複数の関係を作成するべきではない場合、レッスンの種類を示すデフォルト フィールドを使用して 3 つのフォームを実際にレンダリングする方法についてアドバイスをお願いします。