Answers:
手动执行:
add_column :post, :author_id, :integer
但是现在,当您创建belongs_to语句时,您将不得不对其进行修改,因此现在您必须调用
def post
    belongs_to :user, :foreign_key => 'author_id'
end
              schema_plusgem,t.references :category, index: true, foreign_key: true, references: :match_categories在迁移文件中也对我有用。
                    如果您要定义Post模型表格,您可以设置references,index并foreign_key在一行:
t.references :author, index: true, foreign_key: { to_table: :users }
如果要将引用添加到现有表,则可以执行以下操作:
add_reference :posts, :author, foreign_key: { to_table: :users }
注意: 的默认值为indextrue。
nulls。要不允许它们,请添加通常的选项null: false。
                    在Rails 4.2+中,您也可以在db中设置外键,这是一个好主意。
对于简单的关联,也可以在t.references添加时完成foreign_key: true,但是在这种情况下,您将需要两行。
# The migration
add_reference :posts, :author, index: true
add_foreign_key :posts, :users, column: :author_id
# The model
belongs_to :author, class_name: "User"
              references: :users选项add_reference。我没有在文档中看到它的记载,没有它,它似乎可以正常工作。
                    在Rails 4中,使用postgresql和schema_plus gem时,您只需编写
add_reference :posts, :author, references: :users
这将创建一个author_id正确引用的列users(id)。
在你的模型中,你写
belongs_to :author, class_name: "User"
注意,在创建新表时,您可以按以下方式编写它:
create_table :things do |t| 
  t.belongs_to :author, references: :users 
end 
注意:
schema_plusgem的整体与Rails 5+不兼容,但是此功能由与rails 5兼容的gem schema_auto_foreign_keys(schema_plus的一部分)提供。
create_table:t.references :author, references: :users
                    :references做任何事情的证据。
                    schema_plusgem 已有很长时间了,它实际上是在添加该功能。我相应地编辑了答案。
                    t.references :col_name, references: other_table_name无需安装额外的gem即可使用该语法。
                    如果您不使用外键,那么另一个表的实际表名则无关紧要。
add_reference :posts, :author
从Rails 5开始,如果您使用外键,则可以在外键选项中指定另一个表的名称。(请参阅https://github.com/rails/rails/issues/21563进行讨论)
add_reference :posts, :author, foreign_key: {to_table: :users}
在Rails 5之前,您应该添加外键作为单独的步骤:
add_foreign_key :posts, :users, column: :author_id
              {to_table: :users}