gpt4 book ai didi

ruby-on-rails - rails中add_references和add_column的区别

转载 作者:行者123 更新时间:2023-12-03 15:57:49 31 4
gpt4 key购买 nike

 add_reference :books, :author
add_column :books, :author_id, :integer

这里添加引用将创建 user_id 列,添加列也在书籍表中创建 user_id 列。它们之间有什么区别。使用引用而不是列的优点是什么?

最佳答案

TLDR

#add_column用于添加顾名思义的列。

#add_reference是同时创建列、索引和外键的快捷方式。

解释

在您的示例中,唯一的区别是将由 #add_reference 创建的列上的索引默认为 true .

add_reference :books, :author
# equals
add_column :books, :author_id, :integer
add_index :books, :author_id

但是,如果您采取以下行:
add_reference :books, :author, foreign_key: true

它还会创建一个外键约束。

此外,如果您希望每个作者只能出版一本书,您可以通过执行以下操作通过 #add_reference 设置唯一约束:
add_reference :books, :author, null: false, index: {unique: true}, foreign_key: true

这要求每本书都有一个作者,并限制作者最多拥有一本书。

可以通过执行以下操作使用 #add_column 完成相同的操作:
add_column :books, :author_id, :integer, null: false
add_index :books, :author_id, unique: true
add_foreign_key :books, :authors

关于ruby-on-rails - rails中add_references和add_column的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430701/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com