2012-02-15 33 views
0

我有兩個數據電子表格保存在單獨的Google電子表格,商店和產品中。在.csv文件中創建has_and_belongs_to_many模型中的記錄

商店有列:

  • 店鋪名稱
  • 商店位置
  • 商店ID

產品有列:

  • 產品名稱
  • 產品成本
  • 產品編號
  • 商店ID

在Rails中,我有兩個型號 - 商店產品 - 用has_and_belongs_to_many關係連接。這些模型的屬性與電子表格中的每個列匹配。

我希望創建一個rake任務,是以電子表格爲CSV文件,並會在商店和產品數據庫鏈接行,但作爲一個編碼新手,我發現很難。將數據添加到.csv中的一個表似乎很容易,但我如何使用匹配的「產品ID」列來鏈接兩個csv文件中的數據?

+0

我還應該補充一點,上面的列表看起來像是一對多的關係而不是HABTM。但是,我將在稍後添加關聯,以便每個商店都有多個產品。 – phrasemix 2012-02-15 18:38:38

回答

0

一般來說,我會做類似的followi ng:

  1. 首先創建商店,因爲它們是獨立的。當你創建的存儲和保存對象,存儲對象添加到{STOREID:}的哈希值(?我假定會有每家商店以上的產品)
  2. 在products.csv然後閱讀。
  3. 對於產品中的CSV每一行,創建產品對象,然後從你的哈希查找存儲對象與您正在閱讀的行中的ID設置的關聯,最後保存你的產品對象。

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

鋼軌我猜想,有一個快速的方式通過的衆多工具之一(耙等)來做到這一點。

0

我相信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

+0

'has_and_belongs_to_many'尚未被棄用。根據您鏈接到的指南:「在has_and_belongs_to_many關聯中在連接表上使用額外的屬性已被棄用。」但是HABTM生存下來。 – Brandan 2012-02-16 03:23:03