gpt4 book ai didi

ruby-on-rails - 使用 has_many : primary_key when it isn't the primary_key in the database

转载 作者:行者123 更新时间:2023-11-29 13:11:36 25 4
gpt4 key购买 nike

我正在开发一个使用 rails 的代码库,之前的开发人员已经在 postgres 中创建了一些相互引用的模型。然而,他们使用 activerecordprimary_key 字段,即使数据库没有将该字段显示为 primary_key。这有什么好处或坏处吗?请记住,“假”primary_key 字段上有一个索引。

# models
class A < ActiveRecord:Base
has_many :bs, primary_key: :special_id
end

class B < ActiveRecord::Base
belongs_to :a, primary_key: :special_id, foreign_key: :special_id
end

实际主键是 B 上的 id,但架构包括 idspecial_idspecial_id

上存在索引

最佳答案

从理论上讲,好处是它更具可读性。在你的情况下 A.find(id).bs会加入 B具有相应的 b_id 的 s在你的A表,这可能不像使用其他名称那样直观,在本例中为 special_id .

从性能的角度来看,如果主键和外键列上都有索引,它应该没有明显的区别。 has_many方法最终会导致查询,因此唯一的计算成本是换出查询字符串中的列名 ActiveRecord产生。

您可以尝试使用各种键声明对查询进行基准测试,但如果它在查询时间上增加一毫秒,我会感到很惊讶。

关于ruby-on-rails - 使用 has_many : primary_key when it isn't the primary_key in the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54009902/

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