Ruby on rails 从现有属性分配父\u id
我有一个从CSV文件导入的数据库,我想根据下面的程序集级别分配层次结构。不知道该采取哪种方法。我可以写if语句,但会很长。对不起,我是新手,我不知道从哪里开始。非常感谢您的帮助Ruby on rails 从现有属性分配父\u id,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,我有一个从CSV文件导入的数据库,我想根据下面的程序集级别分配层次结构。不知道该采取哪种方法。我可以写if语句,但会很长。对不起,我是新手,我不知道从哪里开始。非常感谢您的帮助 assembly_level assembly_tree description uniq_id 0 zero level "zero level" d9s64 1
assembly_level assembly_tree description uniq_id
0 zero level "zero level" d9s64
1 level one assembly "level one" c9633
2 level two assembly "level two" 11197
3 level three assembly "level three" e271f
4 level four assembly "level four" 552da
4 level four assembly "level four" 4568a
3 level three assembly "level three" b72bd
如何在导入期间将程序集\u级别分配给父\u id
@ item = item .New(:CuleMySale= = PARAM[[ PARTENGIDID])
< P>假设您逐行从CSV文件中读取内容并提供您提供的少量信息,我认为(如果我错了,请纠正我)该层次结构隐含在文件的顺序中。 我想试试这个:- 无论何时存储记录,都将记录的id存储在临时变量中李>
- 然后,我会检查下一张唱片是否是儿童唱片。如果是的话,我会分配我刚刚存储的父id
previous_record['id'] = 0
previous_record['level'] = 999 # Temp variable with previous record
csv_file.read do |line| # Reading method of your choice
line_array = line.split(";")
item = Item.new({'assembly_level' => line_array[0], 'assembly_tree' => line_array[1], 'description' => line_array[2], 'uniq_id' => line_array[3]) # Creating regular item
# If the current item is children the assembly level is greater than the previous one
if item.assembly_level > previous_record['level']
item.parent_id = previous_record['id']
item.save
else # Only store previous value when is not a children
# Storing values to use for the next record
previous_record['id'] = line_array[3]
previous_record['level'] = line_array[0]
end
end
假设您逐行从CSV文件中读取内容,以及提供的少量信息,我认为(如果我错了,请纠正我),层次结构隐含在文件的顺序中。 我想试试这个:
- 无论何时存储记录,都将记录的id存储在临时变量中李>
- 然后,我会检查下一张唱片是否是儿童唱片。如果是的话,我会分配我刚刚存储的父id
previous_record['id'] = 0
previous_record['level'] = 999 # Temp variable with previous record
csv_file.read do |line| # Reading method of your choice
line_array = line.split(";")
item = Item.new({'assembly_level' => line_array[0], 'assembly_tree' => line_array[1], 'description' => line_array[2], 'uniq_id' => line_array[3]) # Creating regular item
# If the current item is children the assembly level is greater than the previous one
if item.assembly_level > previous_record['level']
item.parent_id = previous_record['id']
item.save
else # Only store previous value when is not a children
# Storing values to use for the next record
previous_record['id'] = line_array[3]
previous_record['level'] = line_array[0]
end
end
问题不清楚。请用示例代码对其进行更多解释possible@bunty,请再次查看问题,提前谢谢@michaelfouad我们需要更多的上下文,即更多的代码!您应该创建一个最小的、自包含的示例,其中包含尽可能少的无关信息,并清楚地显示您的问题。理想情况下,代码应该是可复制+粘贴的。问题不清楚。请用示例代码对其进行更多解释possible@bunty,请再次查看问题,提前谢谢@michaelfouad我们需要更多的上下文,即更多的代码!您应该创建一个最小的、自包含的示例,其中包含尽可能少的无关信息,并清楚地显示您的问题。理想情况下,代码应该是可复制+粘贴的。问题不清楚。请用示例代码对其进行更多解释possible@bunty,请再次查看问题,提前谢谢@michaelfouad我们需要更多的上下文,即更多的代码!您应该创建一个最小的、自包含的示例,其中包含尽可能少的无关信息,并清楚地显示您的问题。理想情况下,代码应该是可复制+粘贴的。