单个ActiveRecord模型后面的多个表

时间:2016-08-11 09:08:40

标签: ruby-on-rails database activerecord legacy

我正在使用两个遗留的Windows应用程序,我们将Ruby on Rails应用程序集成在一起。他们的数据库非常糟糕。

在每个中我都有两个不同的表来表示订单。对于一个数据库,我有这些ActiveRecord模型:

CustomerOrder
CustomerOrderCopy

第一个表用于正在进行的订单。第二个表是档案。

通常我必须在两个表中查找订单。

有没有人建议如何让一个ActiveRecord模型代表两个表?意思是,如果在一个订单中找不到订单,请使用另一个。

更新

我使用以下内容从另一个模型引用表中的顺序:

has_one :external_order, foreign_key: :OrderNo, primary_key: :external_ordernumber,
  class_name: Visma::CustomerOrder
has_one :visma_order_copy, foreign_key: :OrderCopyNo, primary_key: :external_ordernumber,
  class_name: Visma::CustomerOrderCopy

# Return the external order in Visma from it's current table
def visma_order
  external_order || visma_order_copy
end

我想知道如何让一个模型代表两个表。

1 个答案:

答案 0 :(得分:1)

您是否必须为此

创建一个logicy

也许是这样的

#customer_order.rb

def self.search_order(param)
  self.where(id: param).first || CustomerOrderCopy.where(id: param).first
end

CustomerOrder.search_order(1)