Ruby on rails Rails活动记录关系

Ruby on rails Rails活动记录关系,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,这是从这个问题()开始的,但有一个稍微不同的细微差别 我有一个模型订单,它有三列指向同一个表估算:估算id,最终估算id,成本价格估算id class Order < ApplicationRecord belongs_to :estimate belongs_to :finalized_estimate, class_name: "Estimate", optional: true belongs_to :cost_price_estimate, class_name: "E

这是从这个问题()开始的,但有一个稍微不同的细微差别

我有一个模型
订单
,它有三列指向同一个表
估算
估算id
最终估算id
成本价格估算id

class Order < ApplicationRecord
  belongs_to :estimate
  belongs_to :finalized_estimate, class_name: "Estimate", optional: true
  belongs_to :cost_price_estimate, class_name: "Estimate", optional: true
end
类顺序
估算类是什么样子的?第二,估计值能知道它来自哪个列吗?也就是说,估算模型是否会/能否知道它是一个
最终估算
成本价格估算
,或者只是一个
估算

(估计总是只有一个
订单)

只需执行以下操作

class Order < ApplicationRecord
  belongs_to :estimate # default foreign_key is estimate_id
  belongs_to :finalized_estimate, class_name: "Estimate", foreign_key: 'finalized_estimate_id', optional: true
  belongs_to :cost_price_estimate, class_name: "Estimate", foreign_key: 'cost_price_estimate_id', optional: true
end

这里的主键总是以
id

的形式出现在
orders
表中。谢谢ray,我的理解是默认外键是根据名称设置的。因此,
:最终估价将变为
最终估价id
。不确定这是否会改变课堂上的任何东西。不过,我主要关心的是,当你有一个估价对象时,它如何知道它是哪种“类型”的估价。@Toma,我补充了解释,这将澄清你的想法。向上投票并接受满意的答案:)
当您编写最终估算时,它会查找最终估算模型,而不是按约定进行估算,并搜索最终估算id,因此您必须明确提供它。
=>这可以通过一段代码
类名:“估算”来解决
原来是哪一个?你能从另一个方向展开解释吗?我想知道
估计值。订单可以work@Toma这将是同样的情况下,也有一个。
class Estimate < ApplicationRecord
  has_many :orders
  has_many :finalized_order, class_name: "Order", foreign_key: 'finalized_estimate_id'
  has_many :cost_price_order, class_name: "Order", foreign_key: 'cost_price_estimate_id'
end