Ruby on rails Rails多态联接表以两种方式工作
我开始学习更高级的关联,多态联接表看起来非常有趣,但我遇到了一个不好的限制 我的型号: school\u class.rb: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
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错误:找不到源关联
正确答案是有很多:基础小学,通过::班级学校,源::学校模型,源类型:“基本小学”
但我会将答案标记为正确,请更新它。