【发布时间】:2016-10-24 22:53:44
【问题描述】:
我有两个模型分类和分类关系。我想使用超类和子类创建分类层次结构,以便每个分类可以有许多子类但只有一个超类。
我的迁移看起来像这样
class CreateClassifications < ActiveRecord::Migration[5.0]
def change
create_table :classifications do |t|
t.string :symbol
t.string :title
t.integer :level
t.timestamps
end
add_index :classifications, :symbol
add_index :classifications, :level
end
end
class CreateClassificationRelationships < ActiveRecord::Migration[5.0]
def change
create_table :classification_relationships do |t|
t.integer :superclass_id
t.integer :subclass_id
t.timestamps
end
add_index :classification_relationships, :superclass_id
add_index :classification_relationships, :subclass_id
add_index :classification_relationships, [:superclass_id, :subclass_id], unique: true, name: 'unique_relationship'
end
end
到目前为止,我有我的模型
class ClassificationRelationship < ApplicationRecord
belongs_to :superclass, :class_name => "Classification"
belongs_to :subclass, :class_name => "Classification"
end
class Classification < ApplicationRecord
has_many :classification_relationships
has_many :subclasses, through => :classification_relationships
has_one :superclass, through => :classification_relationships
end
我阅读了很多其他帖子,但仍然不确定如何完成关联。我很确定我需要指定外键,但不清楚我应该如何做到这一点。感谢您的帮助!
【问题讨论】:
标签: activerecord associations ruby-on-rails-5