Создание записей в моделях has_and_belongs_to_many из файла .csv - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть две таблицы данных, сохраненные в отдельных таблицах Google: магазины и продукты.

В магазинах есть столбцы для:

  • Название магазина
  • Местоположение магазина
  • Идентификатор магазина

В товарах есть столбцыдля:

  • Название продукта
  • Стоимость продукта
  • Идентификатор продукта
  • Идентификатор магазина

В Rails, Iесть две модели - Store и Product - связанные с отношением has_and_belongs_to_many.У моделей есть атрибуты, соответствующие каждому из столбцов в электронных таблицах.

Я ищу создание грабли, которая принимает электронные таблицы в виде файлов CSV и создает связанные строки в базах данных магазинов и продуктов, но является кодировкой.новичок, мне трудно.Добавление данных в одну таблицу из CSV-файла кажется достаточно простым, но как я могу использовать соответствующий столбец «Идентификатор продукта», чтобы связать данные в двух CSV-файлах?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

В общем, я бы сделал что-то вроде следующего:

  1. Сначала создайте магазины, поскольку они независимы. При создании хранилища и сохранении объекта добавьте объект хранилища в хэш {storeid:}
  2. Тогда прочитайте в products.csv (я предполагаю, что в магазине будет более одного товара?).
  3. Для каждой строки в csv продукта создайте объект продукта, а затем установите связь, найдя объект хранилища из вашего хэша с идентификатором в строке, которую вы читаете, и, наконец, сохраните свой объект продукта.

    class Store < ActiveRecord::Base  
    
    end
    
    
    class Product < ActiveRecord::Base  
    
      has_and_belongs_to_many :stores  
    
    end
    

Для рельсов я бы предположил, что есть быстрый способ сделать это с помощью одного из множества инструментов (рейка и т. Д.).

0 голосов
/ 15 февраля 2012

Я считаю, что Has_and_belongs_to_many устарела в новейших рельсах, возможно, вы захотите перейти на Has_many_through: Store_Products (таблица ссылок с: product_id и: store_id)

Затем создайте файл с граблями как

Store_Products.create (: product_id => '1',: store_id => '1')

Могу взглянуть на это: http://guides.rubyonrails.org/association_basics.html

...