如何设置some_id 表中的列是整数,是两个不同表的主键吗? some_id是第二个表的一列,但在第一个表中不存在。我是否还需要在第一个表中添加some_id以及如何连接它们?
答案 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正常工作。