我有2个现有模型,我想创建1对1的关联。我唯一的问题是这两个模型是从同一个父类继承的
class Model < ActiveRecord::Base
class Student < Model
#has one :info
class Info < Model
#belongs to :student
如何为此创建迁移?
答案 0 :(得分:0)
来自https://edgeguides.rubyonrails.org/active_record_migrations.html
rails generate migration AddUserRefToProducts user:references
产生
class AddUserRefToProducts < ActiveRecord::Migration[5.0]
def change
add_reference :products, :user, foreign_key: true
end
end
此迁移将创建一个user_id列和适当的索引。有关更多的add_reference选项,请访问API文档。
所以在您的情况下:
rails generate migration AddStudentRefToInfo student:references
这将生成以下迁移:
class AddUserRefToProducts < ActiveRecord::Migration[5.0]
def change
add_reference :info, :student, foreign_key: true
end
end
请注意,假设您的“信息”模型存储在名为“信息”的表中。可能是“信息”。
答案 1 :(得分:0)
为什么要使用Model作为模型名称?我认为您正在寻找的是多态关系https://guides.rubyonrails.org/association_basics.html#polymorphic-associations
但是,如果没有有关您的模型的更多信息,我们将无法提供最佳答案。 您可能想看看this article on STI vs Polymorphic relations