新手问题 这个真的难着我了!!!

xiaobai2 · 2017年03月10日 · 最后由 xiaobai2 回复于 2017年03月10日 · 1395 次阅读

我们的表结构如下是个三级分类的一张表 id,name,parent_id 目前实现如下:

data = Roo::Excelx.new("data.xlsx")
data.last_row.times do |line|
   row = data.sheet(data.sheets.first).row(line+3)
   ........
end

row 类似 ["家用电器", nil, nil, nil, nil]
看来我的硬编码能力真的不行啊😂

不知道楼主所说的问题是什么?

像这种我一般复制黏贴到控制台去处理

csv 多好用

VincentJiang 回复

就是把这种多级的数据读取到类别表中

yingce 回复

还好吧,这个不是重点,重点是怎么把这些数据以子类父类的关系插入数据库当中,现在已经可以读取每个 row 了,就是不知道接下来改怎么办......

子类父类?你说的是大家点小家电都属于 家用电器是么

yingce 回复

是的,家用电器 <--- 大家电 <--- 平板电脑 然后用 parent_id 区分 parent_id 等于 0 的属于一级 (家用电器,),然后后续依次 parent_id 等于 1 的都是 id 等于 1 的子类,依次分三级

哈希可以帮你解决。。

搞定了,但是感觉很低级 (求优化)

data = Roo::Excelx.new("data.xlsx")
data.last_row.times do |line|
  row = data.sheet(data.sheets.first).row(line)
  if row[0].present?
    @p = Shop::Category.create(name: row[0], parent_id: 0)
  end
  if row[1].present?
    @m = Shop::Category.create(name: row[1], parent_id: @p.id)
  end
  if row[2].present?
    Shop::Category.create(name: row[2], parent_id: @m.id)
  end
end
ad583255925 回复

怎么调试呢?感觉这个业务相对来说比较复杂啊

是的,如果能将数据转换成 hash 确实一目了然

xiaobai2 关闭了讨论。 03月10日 20:08
需要 登录 后方可回复, 如果你还没有账号请 注册新账号