我正在抓取一个网站,基本上,我有一个名为games
的表和一个名为publisher
的表。一场比赛has_one :publisher
。
当我找到一款游戏时,比如星际争霸(与出版商暴雪一起),我创建了一个名为“星际争霸”的游戏,以及一个名为“暴雪”的出版商。这个问题:
当我找到暴雪的另一款游戏时,暗黑破坏神说,我创建了一个标题为Diablo
的新游戏和名为Blizzard
的新发布商。现在我有两个名为Blizzard
的发布商。我怎样才能确保星际争霸和暗黑破坏神都指向独一无二的暴雪?
我在创建游戏之前搜索数据库,查找发布者是否存在并使用它,如果它不存在则创建一个然后使用它。但这是正常/最佳方式吗?
由于
答案 0 :(得分:2)
是的,你首先找到它,如果它不存在,那么创建它:
publisher = Publisher.find_or_create_by_name name: "Blizzard"
publisher.games.build name: "Diablo", <more_params_for_game>
publisher.save
or we could also use create instead of build above.