我想创建一个has_many_through关系,创建两个名为subject和lesssons的模型。我需要创建一个连接表,而不是创建一个单独的模型。期待一个更好的解决方案。
提前致谢!
答案 0 :(得分:1)
has_and_belongs_to_many
association是一个没有连接模型的多对多关联:
class Subject < ApplicationRecord
has_and_belongs_to_many :lessons
end
class Lesson < ApplicationRecord
has_and_belongs_to_many :subjects
end
要生成联接表,请运行rails g CreateJoinTableLessonsSubjects lessons subjects
:
class CreateJoinTableLessonsSubjects < ActiveRecord::Migration[5.0]
def change
create_join_table :lessons, :subjects do |t|
# t.index [:lesson_id, :subject_id]
# t.index [:subject_id, :lesson_id]
end
end
end
请注意,与lessons_subjects
的{{1}}相比,表格命名与lesson_subjects
不同。
虽然has_many through:
稍微简单并且通过不实例化连接模型实例来节省内存,但是存在一些很大的缺点:
如果您只是通过重命名表格并创建连接模型来发现需要这些功能,那么以后可以简单地从has_and_belongs_to_many
转到has_and_belongs_to_many
。