在.csv文件中的has_and_belongs_to_many模型中创建记录

时间:2012-02-15 18:23:33

标签: ruby-on-rails csv has-and-belongs-to-many

我有两个数据电子表格保存在单独的Google电子表格,商店和产品中。

商店有以下栏目:

  • 商店名称
  • 商店位置
  • 商店ID

产品包含以下列:

  • 产品名称
  • 产品成本
  • 产品ID
  • 商店ID

在Rails中,我有两个模型 - 商店商品 - 与has_and_belongs_to_many关系相关联。模型具有与电子表格中的每个列匹配的属性。

我正在寻找创建一个rake任务,将电子表格作为CSV文件并在商店和产品数据库中创建链接的行,但作为一个编码新手,我发现它很难。从.csv向一个表添加数据似乎很容易,但是如何使用匹配的“产品ID”列链接两个csv文件中的数据?

2 个答案:

答案 0 :(得分:0)

我相信Has_and_belongs_to_many在最新的rails中被折旧,可能想要移动到Has_many_through:Store_Products(链接表:product_id和:store_id)

然后使用rake文件创建

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

可能想看看这个: http://guides.rubyonrails.org/association_basics.html

答案 1 :(得分:0)

一般来说,我会做类似以下的事情:

  1. 首先创建商店,因为它们是独立的。在创建商店并保存对象时,将商店对象添加到{storeid:}
  2. 的哈希值
  3. 然后阅读products.csv(我假设每个商店会有多个产品?)。
  4. 对于产品csv中的每一行,创建产品对象,然后通过在您正在阅读的行中使用您的哈希查找商店对象来设置关联,最后保存您的产品对象。

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

    对于rails我会猜测有一种快速方法可以通过众多工具之一(rake等)来实现。