2016-08-11 4 views
1

Я работаю с двумя устаревшими приложениями Windows, с которыми мы интегрируем наше приложение Ruby on Rails. Их базы данных - ужасный беспорядок.Несколько таблиц за одной моделью ActiveRecord

В каждой из них у меня есть две разные таблицы, представляющие заказ. Для одной базы данных у меня есть эти модели 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

Вы должны создать logicy для этого

может быть, что-то вроде этого

#customer_order.rb

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

CustomerOrder.search_order(1)

+0

Я использую подобную логику, и это то, что я хочу, чтобы упростить. – ringe

+0

Есть ли какая-либо связь между ними? –

+0

См. Мое обновление в вопросе. – ringe