gpt4 book ai didi

ruby-on-rails - 为什么会有人用gem老外?

转载 作者:行者123 更新时间:2023-12-01 07:10:58 25 4
gpt4 key购买 nike

这很可能是一个菜鸟问题,因为人们使用这个 gem 并且很多人喜欢它,但我不明白目的。我正在看一个项目,它在 t.references :foreign_key_table_name , :foreign_key => true 等地方被多次使用过。 , add_foreign_key :table :foreign_key_table_name, :options ,并在创建 t.foreign_key :foreign_key_table_name .希望那些没有混淆,因为它们脱离了上下文。

但我不明白这与 t.references :foreign_key_table_name 内置的 rails 有什么不同或者我只是添加 t.integer :foreign_key_table_name_id ?它是否只是通过明确这是一个“外键”来使其更具可读性?如果是这样的话,我可以添加评论而不是 gem... 我看到的唯一优点是您可以移动诸如 :dependent 之类的选项。进入迁移而不是在模型中,但谁在乎呢?

最佳答案

一些数据库引擎支持合法的外键约束:如果有人试图保存 Childparent_id共 5 个,但没有 Parentid 5,如果有外键约束链接children.parent_id,那么数据库本身(不是Rails)将拒绝记录和 parents.id .

外键还可以指定如果删除父项会发生什么:例如,在 MySQL 中,我们可以删除或取消依赖记录,就像 Rails 对 :dependent 所做的那样。 ,甚至直接拒绝删除并抛出错误。

由于并非所有数据库引擎都提供此功能,Rails 提供了模拟它 :dependent ,并且很高兴在软件级别拥有它,以便从属的子记录可以触发它们的 destroy删除父级时的回调。由于该功能与引擎无关,因此几乎与模式无关,Rails 不处理外键的创建/删除。那就是foreigner进来:如果您的引擎支持外键约束,并且您希望对数据完整性更加自信,foreigner可以提供帮助。

关于ruby-on-rails - 为什么会有人用gem老外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717698/

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