设置两个表的主键

时间:2016-06-10 14:26:10

标签: ruby-on-rails primary-key

如何设置some_id 表中的列是整数,是两个不同表的主键吗? some_id是第二个表的一列,但在第一个表中不存在。我是否还需要在第一个表中添加some_id以及如何连接它们?

1 个答案:

答案 0 :(得分:1)

是的,如果你想要一个外键到另一个表,你需要该列的主键作为一个字段。

例如 表A:书籍

id
name
author_id

表B:作者

id
first_name
last_name

如果您在没有作者参考的情况下创建书籍,则可以编写迁移以添加它。

在项目目录中从终端运行此命令:

rails g migration add_author_id_to_books

这将创建一个可以使用您喜欢的文本编辑器编辑的迁移。

您完成的迁移将如下所示:

class AddAuthorIdToBooks < ActiveRecord::Migration
  def change
    add_reference :books, :author, index: true, foreign_key: true
  end
end

完成更新模型以反映关系。

book.rb

class Book < ActiveRecord::Base
  has_many :authors
end

author.rb

class Author < ActiveRecord::Base
  belongs_to :book
end

注意:这是Rails 4语法。如果您使用的是旧版本,请参阅特定于您的版本的文档。在旧版本中,FK语法不太好,您甚至可能需要一个gem来让FK正常工作。