根据哈希声明变量

时间:2014-08-21 21:24:30

标签: ruby

我有两个数据库:一个是旧的并且已弃用;另一个是新的,有效的。它们都有一个名为brands的表。

在不推荐使用的数据库中,brands表格类似以下内容:

id | name
1  | Playstation 1
2  | Playstation 2
3  | Playstation 3
4  | Playstation 4
5  | Xbox
6  | Xbox 360
7  | Xbox One

在新的表中,这是brands表:

id | name
1  | Xbox
2  | Xbox 360
3  | Xbox One
4  | Playstation 1
5  | Playstation 2
6  | Playstation 3
7  | Playstation 4

在实践中,场景更复杂,但我给出的例子很好。所以,还有一个products表:

id | name | brand_id | created_at | updated_at

我想将旧数据库中的产品导入到新数据库中,但是如您所见,id的品牌不匹配。然后,我想做这样的事情:

brand_id 1 on old_database == brand_id 4 on new_database

更具体地说,是一种字典 没有ifs

这就是我所做的:

if query.brand == 1
  brand_id == 4
elsif query.brand == 2
  brand_id = 5
end

但这不是我真正想要的。是的,它有效,但我想做一些更简单的事情。我认为哈希正是我正在寻找的。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以声明这样的哈希:

brand_map = {1 => 4, 2 => 5} # add other entries as needed

然后像这样查找新的id:

brand_id = brand_map[1]
=> 4

答案 1 :(得分:1)

是的,似乎哈希就是你想要的。例如,

id_map = { 1=>4, 2=>5, ... } # old id => new id

然后记录id, name,将其作为id_map(id), name写入新数据库。