如何查找现有(“父”)记录并向其添加关联记录

时间:2012-12-21 02:21:17

标签: mysql ruby-on-rails ruby activerecord

我正在抓取一个网站,基本上,我有一个名为games的表和一个名为publisher的表。一场比赛has_one :publisher

当我找到一款游戏时,比如星际争霸(与出版商暴雪一起),我创建了一个名为“星际争霸”的游戏,以及一个名为“暴雪”的出版商。这个问题:

当我找到暴雪的另一款游戏时,暗黑破坏神说,我创建了一个标题为Diablo的新游戏和名为Blizzard的新发布商。现在我有两个名为Blizzard的发布商。我怎样才能确保星际争霸和暗黑破坏神都指向独一无二的暴雪?

我在创建游戏之前搜索数据库,查找发布者是否存在并使用它,如果它不存在则创建一个然后使用它。但这是正常/最佳方式吗?

由于

1 个答案:

答案 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.