gpt4 book ai didi

ruby-on-rails - belongs_to 关联中的第一个子元素是如何确定的?

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:32 24 4
gpt4 key购买 nike

我有 3 张属于同一批货的发票。创建的第一张发票始终是装运的主发票。

Invoice 
id shipment_id
21 55 # This is the main invoice
88 55
93 55

如果我执行以下查询

s = Shipment.find(55)
s.invoices[0] # 21
s.invoices[1] # 88
s.invoices[2] # 93

所以我猜子元素的顺序是由它们的 id 决定的。我对吗?或者还有其他原因?

我问是因为我需要确定子元素的顺序以确保我的方法之一始终有效。

def am_i_the_main_invoice?
if self.shipment.invoices[0].id == self.id
true
else
false
end
end

最佳答案

除非您明确设置,否则顺序是随机的。虽然您的数据库现在可能会以相同的顺序返回元素,但如果您更改任何内容(甚至看似无关的内容),它可以是任何其他顺序。再次重申:不要相信从关系数据库中检索到的元素的顺序,除非您在查询中明确设置了顺序。

在您的 Shipment 类中,您可能已经设置了一个 has_many 关系,您可以添加类似 :order => "id ASC" 的内容始终按 id 执行命令。

关于ruby-on-rails - belongs_to 关联中的第一个子元素是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077280/

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