Ruby on rails Rails多态联接表以两种方式工作

Ruby on rails Rails多态联接表以两种方式工作,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我开始学习更高级的关联,多态联接表看起来非常有趣,但我遇到了一个不好的限制 我的型号: school\u class.rb: class SchoolClass < ActiveRecord::Base has_many :class_of_schools, as: :school_model, dependent: :destroy has_many :basic_primary_schools, through: :class_of_schools has_many :ba

我开始学习更高级的关联,多态联接表看起来非常有趣,但我遇到了一个不好的限制

我的型号:

school\u class.rb:

class SchoolClass < ActiveRecord::Base
  has_many :class_of_schools, as: :school_model, dependent: :destroy
  has_many :basic_primary_schools, through: :class_of_schools
  has_many :basic_shugenja_schools, through: :class_of_schools
  has_many :basic_monk_schools, through: :class_of_schools
end
class ClassOfSchool < ActiveRecord::Base
  belongs_to :school_model, polymorphic: true
  belongs_to :school_class
end
class BasicPrimarySchool < ActiveRecord::Base

  has_many :class_of_schools, as: :school_model, dependent: :destroy
  has_many :school_classes, through: :class_of_schools
end
class CreateClassOfSchools < ActiveRecord::Migration
  def change
    create_table :class_of_schools do |t|
      t.integer :school_class_id
      t.integer :school_model_id
      t.string :school_model_type

      t.timestamps null: false
    end
  end
end
我的问题:

class SchoolClass < ActiveRecord::Base
  has_many :class_of_schools, as: :school_model, dependent: :destroy
  has_many :basic_primary_schools, through: :class_of_schools
  has_many :basic_shugenja_schools, through: :class_of_schools
  has_many :basic_monk_schools, through: :class_of_schools
end
class ClassOfSchool < ActiveRecord::Base
  belongs_to :school_model, polymorphic: true
  belongs_to :school_class
end
class BasicPrimarySchool < ActiveRecord::Base

  has_many :class_of_schools, as: :school_model, dependent: :destroy
  has_many :school_classes, through: :class_of_schools
end
class CreateClassOfSchools < ActiveRecord::Migration
  def change
    create_table :class_of_schools do |t|
      t.integer :school_class_id
      t.integer :school_model_id
      t.string :school_model_type

      t.timestamps null: false
    end
  end
end

我怎样才能使这个协会双向运作?因此我可以调用
ClassSchool.first.class\u of_schools
返回与此对象关联的所有对象。并且仍然能够调用
BasicPrimarySchool.first.school\u classes
来获取相关的
school\u class
对象。

只需删除school class关系中的
as::school\u model

has_many :class_of_schools, dependent: :destroy
编辑

学校班级中的关系更改为


有很多:基础小学,通过::班级小学,来源::学校模型,来源类型:“基本小学”

它像学校班级一样工作。班级小学现在返回这些对象的数组:)但当我尝试获取学校班级时,首先,基础小学小学,我得到
ActiveRecord::hasmanythroughsourceassociationnotfound错误:找不到源关联
正确答案是
有很多:基础小学,通过::班级学校,源::学校模型,源类型:“基本小学”
但我会将答案标记为正确,请更新它。