3

私はウェブサイトをスクレイピングしていて、基本的に、というテーブルとgamesというテーブルがありますpublisher。ゲームhas_one :publisher

たとえば、Starcraft(パブリッシャーBlizzard)というゲームを見つけたら、Starcraftというタイトルのゲームと、Blizzardという名前のパブリッシャーを作成します。これの問題:

Blizzardによる別のゲーム、たとえばDiabloを見つけたら、タイトル付きの新しいゲームDiabloと名前付きの新しいパブリッシャーを作成しますBlizzard。現在、名前が2つの発行元がありますBlizzard。StarcraftとDiabloの両方が唯一のBlizzardを指していることを確認するにはどうすればよいですか?

ゲームを作成する前にデータベースを検索し、パブリッシャーが存在するかどうかを確認して使用し、存在しない場合は作成して使用します。しかし、これはこれを行うための通常の/最良の方法ですか?

ありがとう

4

1 に答える 1

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.
于 2012-12-21T02:24:51.390 に答える