Ruby on rails rails模型-两个表具有相同的主键和外键字段

Ruby on rails rails模型-两个表具有相同的主键和外键字段,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在使用rails应用程序的现有数据库 我无法更改表名或列名 假设表1是“发票”,表2是“订单” 它们都有一个主键,叫做相同的东西,比如说“order\u id” 发票可以通过查看orders表中的主键“order_id”找到其订单 反之亦然,对于查找发票的订单 发票可以有但不总是有一个订单(除了订单之外,您可能还会收到其他订单的发票,如“工单”,可以通过在“工单”表的主键位置查找“工单id”来找到。因此发票可能有工单或订单 订单总是有发票的 工单上总是有发票 我试图找出模型中的类 您是否将主

我正在使用rails应用程序的现有数据库

我无法更改表名或列名

假设表1是“发票”,表2是“订单”

它们都有一个主键,叫做相同的东西,比如说“order\u id”

发票可以通过查看orders表中的主键“order_id”找到其订单

反之亦然,对于查找发票的订单

发票可以有但不总是有一个订单(除了订单之外,您可能还会收到其他订单的发票,如“工单”,可以通过在“工单”表的主键位置查找“工单id”来找到。因此发票可能有工单或订单

订单总是有发票的 工单上总是有发票

我试图找出模型中的类

您是否将主键和外键设置为同一个对象?关于所属对象呢?按照此数据库的设置方式,没有任何对象真正属于任何对象,它们只是通过相同的值“order\u id”相互引用。会是这样吗

class Invoice < ActiveRecord::Base
    set_primary_key(:order_id)
    set_foreign_key(:order_id)
end
class发票
--剪断--

类顺序
…对于工单也是如此

class WorkOrder < ActiveRecord::Base
    set_primary_key(:order_id)
    set_foreign_key(:order_id)
end
class WorkOrder
这是正确的吗?这似乎是无用的一种方式来做,但这个数据库是可怕的

那么所有属于你的东西呢

如果我遗漏了什么,请告诉我


谢谢!

我相信答案可能是:

class Order < ActiveRecord::Base
    set_primary_key(:order_id)
    belongs_to :invoice, :foreign_key => :order_id
end

class WorkOrder < ActiveRecord::Base
    set_primary_key(:order_id)
    belongs_to :invoice, :foreign_key => :order_id
end

class Invoice < ActiveRecord::Base
    set_primary_key(:order_id)
    has_one :work_order
    has_one :order
end
类顺序:order\u id
结束
类工作顺序:order\u id
结束
类发票
虽然我不确定主键也可以是外键(我也是Rails新手)

class Order < ActiveRecord::Base
    set_primary_key(:order_id)
    belongs_to :invoice, :foreign_key => :order_id
end

class WorkOrder < ActiveRecord::Base
    set_primary_key(:order_id)
    belongs_to :invoice, :foreign_key => :order_id
end

class Invoice < ActiveRecord::Base
    set_primary_key(:order_id)
    has_one :work_order
    has_one :order
end