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,同样我在视图 -> sclasses 文件夹中有 slist.html.erb、snew.html.erb。

当我为老师添加记录时,它也应该要求多年并保存记录。同样,它应该询问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 回答