我创建了许多教师和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 - &gt;老师文件夹,同样我在视图中有slist.html.erb,snew.html.erb - &gt; sclasses文件夹。
当我为教师添加记录时,它也应该要求多年并保存记录。同样的一年,它应该要求teacher_ids并保存记录。我怎么能这样做?这些记录将保存在哪里?
答案 0 :(得分:0)
我不确定这会回答你的问题但是当你建立多对多关系时,你的模型会得到一些'虚拟'属性,称为[association_name] _ids。因此,在您的情况下,Sclass模型将具有teacher_ids
属性,而教师模型将具有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 -%>