0

Teacher と Sclass の多対多の関連付けを作成しました。ClassTeacher は結合テーブル名です。

class Teacher < ActiveRecord::Base

  has_many :class_teachers
  has_many :Sclasses, :through => :class_teachers

  attr_accessible :teacher_id
  attr_accessible :tname
  attr_accessible :mob
  attr_accessible :email 
end



class Sclass < ActiveRecord::Base

  set_primary_key :year

  has_many :class_teachers
  has_many :teachers, :through => :class_teachers

  attr_accessible :year

end


class ClassTeacher < ActiveRecord::Base

  belongs_to :teacher
  belongs_to :sclass

  attr_accessible :year
  attr_accessible :teacher_id
end

私はビューにtlist.html.erb、tnew.html.erbを持っています->ティーチャーフォルダー、同様にslist.html.erb、snew.html.erbをビューに持っています->sclassesフォルダー。

教師のレコードを追加すると、年数も尋ねられ、レコードが保存されます。同様に、年については teacher_ids を要求し、レコードを保存する必要があります。これを行うにはどうすればよいですか?これらの記録はどこに保存されますか?

4

1 に答える 1

0

これがあなたの質問に答えるかどうかはわかりませんが、多対多の関係を設定すると、モデルは [association_name]_ids と呼ばれる「仮想」属性を取得します。したがって、あなたの場合、 Sclass モデルにはteacher_ids属性があり、 Teacher モデルには属性がありますsclass_ids

たとえば、ID が 1、2、3 の教師を最初の sclass に割り当てたい場合は、次のようにします。

sclass = Sclass.first
sclass.teacher_ids = [1, 2, 3]
sclass.save

フォームでこれを行うには、sclass[teacher_ids][](Sclass を作成/編集するときに) 名前の付いたチェックボックスの行のようなものが必要になるでしょう。次のようなものです。

<% for teacher in Teacher.all -%>
  <%= checkbox_tag "sclass[teacher_ids][]", teacher.id %>
<% end -%>
于 2012-08-16T16:02:28.997 に答える