【发布时间】:2011-03-20 08:20:19
【问题描述】:
我正在将现有数据库与 Rails 应用程序一起使用。
我无法更改表名或列名。
假设表一是“发票”,表二是“订单”
他们都有一个主键,叫做同一个东西,比如说“order_id”
invoices 可以通过查看 orders 表中的主键“order_id”来找到它的订单。
订单查找发票反之亦然。
发票可以有但不总是有一个订单(您可能会收到订单以外的其他东西的发票,例如“work_order”,可以通过在“work_orders”表的主键位置查找“order_id”来找到. 所以发票可能有 work_order 或 order。
订单始终有发票 work_orders 总是有发票
我试图找出模型中的类。
您是否将主键和外键设置为相同的东西?属于_to 呢?这个数据库的设置方式,没有什么真正属于任何东西,它们只是通过相同的值“order_id”相互引用。会是这样吗?
class Invoice < ActiveRecord::Base
set_primary_key(:order_id)
set_foreign_key(:order_id)
end
-- 剪辑--
class Order < ActiveRecord::Base
set_primary_key(:order_id)
set_foreign_key(:order_id)
end
...对于工单也是如此。
class WorkOrder < ActiveRecord::Base
set_primary_key(:order_id)
set_foreign_key(:order_id)
end
这是正确的吗?这样做似乎很垃圾,但是这个数据库很糟糕。
所有 belongs_to 的东西呢?
如果我遗漏了什么,请告诉我。
谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord