2016-05-24 4 views
0

У меня есть 2 CSV файлов, в первую, содержащие тысячи области имя/ID спариваний, т.е.Рубин на Rails Заселите проектирования баз данных

ID, area_name 
1, "New York" 
2, "New Jersey" 

и т.д ...

И второй, содержащий данные о тех областях, , причем единственным идентификатором является ID-имя (поскольку имена не уникальны в имени области).

area_id, field_1, field_2, field_3 
1,  98,  48,  24 
2,  10,  28,  45 

Я глотаю первый CSV в Postgres один раз, и это никогда не изменится, но я буду получать новые строки второго CSV каждые несколько недель или около того, что я буду использовать для вставки данных в БД.

Мой вопрос: что является лучшим способом сохранить все это в моей БД, поскольку мне нужно отображать имена областей для пользователей, но когда они выбирают область, в которой он должен запрашивать БД, используя area_id, и есть тысячи из них.

Заранее благодарен!

ответ

0

Лучше всего вы храните первый csv в таблице с именем Area и поместите отношение has_one к второй модели (например, AreaDetails). Затем вы можете запросить вторую таблицу через первую таблицу.

class Area < ActiveRecord::Base 
    has_one :area_detail, dependent: :destroy 
end 

class AreaDetails < ActiveRecord::Base 
    belongs_to :area 
end 

Теперь вы можете получить в area_details области с идентификатором 1, запустив:

Area.find(1).area_detail 

Я предполагаю, что вы удаляете 2-ой данные таблицы, когда данные поступают в случае, если вы оставляете. данные и нужно показать их все, то вы должны использовать has_many вместо has_one.

Смежные вопросы