我对rails很新。我正在尝试创建一个表,它是三个表的组合。所以我有一个主题表,一个句号表和一个教师表。我想创建一个Class表,它是主题,句点和教师的组合。我该怎么做呢。
答案 0 :(得分:3)
我会称之为Classroom
(类可能会与某些内容冲突)
然后在该表中插入columns_id,subject_id和period_id列。在您的课堂模型中,您可以写
belongs_to :teacher
belongs_to :subject
belongs_to :period
在教师,科目和期间模型中你会写
has_many :classrooms
答案 1 :(得分:3)
创建这样的迁移:
编辑:在表创建块中使用belongs_to
时,应使用关联名称而不是列名
def self.up
create_table :school_classes do |t|
t.belongs_to :subject
t.belongs_to :teacher
t.belongs_to :period
#any_other_columns_required
end
add_index :school_classes, [:subject_id, :teacher_id, :period_id], :unique => true
end
def self.down
drop_table :school_classes
end
答案 2 :(得分:1)
如果不同的对(主题和教师)不可能具有相同的时间段,则无需创建另一个表。在这种情况下,句号表可能是链接表:
class Period
belongs_to :teacher
belongs_to :subject
...
class Teacher
has_many :periods
has_many :subjects, through: :periods
...
class Subject
has_many :periods
has_many :teachers, through: :periods
...
我再说一遍,只有同一时期不能被不同的其他模特对使用时,你才可以这样做。例如,如果您只有一个房间,并且只有一对可以同时在此房间内学习(使用期间),则您在“期间”表中存储的信息对于每项研究都是独立的。