具有1对1关联的Rails STi

时间:2019-03-03 15:33:47

标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord

我有2个现有模型,我想创建1对1的关联。我唯一的问题是这两个模型是从同一个父类继承的

class Model < ActiveRecord::Base

class Student < Model
  #has one :info


class Info < Model
  #belongs to :student

如何为此创建迁移?

2 个答案:

答案 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