Postgresql 在Rails中,如何创建一个迁移,将列/外键添加到与该表类型相同的表中?

Postgresql 在Rails中,如何创建一个迁移,将列/外键添加到与该表类型相同的表中?,postgresql,ruby-on-rails-4,foreign-keys,migration,Postgresql,Ruby On Rails 4,Foreign Keys,Migration,我使用的是Rails 4.2.3。如何创建一个迁移,将列添加到与表类型相同的表中?此外,我如何添加外键(如果列为NULL也可以)?我试过这个 class AddLinkedMyObjectToMyObjects < ActiveRecord::Migration def change add_reference :my_objects, :linked_my_object, type: :my_object, index: true, foreign_key: true e

我使用的是Rails 4.2.3。如何创建一个迁移,将列添加到与表类型相同的表中?此外,我如何添加外键(如果列为NULL也可以)?我试过这个

class AddLinkedMyObjectToMyObjects < ActiveRecord::Migration
  def change
    add_reference :my_objects, :linked_my_object, type: :my_object, index: true, foreign_key: true
  end
end
我认为您需要“手动”完成:

然后在
MyObject
课程中说:

belongs_to :linked_my_object, class_name: MyObject
has_many :my_objects, foreign_key: :linked_my_object_id
我也做了类似的事情。 我会在articles表中添加一个引用用户的引用。这就是在articles表中创建一个名为user_id的索引

1:生成迁移的命令为:

rails generate migration add_user_id_to_articles user:references
class AddUserIdToArticles < ActiveRecord::Migration
  def change
    add_reference :articles, :user, index: true, foreign_key: true
  end
end
2:迁移的结果是:

rails generate migration add_user_id_to_articles user:references
class AddUserIdToArticles < ActiveRecord::Migration
  def change
    add_reference :articles, :user, index: true, foreign_key: true
  end
end
5:为了进行关联,我将添加到article.rb模型中

belongs_to :user
然后,在user.rb模型中

has_many :articles
has_many :articles