0

Nokogiri を使用して Web ページからデータを取得しています。これまでのところ、モデルの 1 つの列に保存できます

def update_fixtures #rake task method
 Fixture.destroy_all
 get_fixtures.each {|match| Fixture.create(home_team: match )}
end

def get_fixtures # Get me all Home Teams
 doc = Nokogiri::HTML(open(FIXTURE_URL))
 home_team = doc.css(".team-home.teams").map {|h| h.text.strip }
end

私が疑問に思っているのは、同時に2、3、または4列に保存する最も効率的な方法です

例として、away_team という別の列があり、そのデータをホーム チームと同じ方法で評価します。

away_team = doc.css(".team-away.teams").map {|a| a.text.strip }

これを get_fixtures メソッド内に配置することをお勧めしますか? そして update_fixtures に次のようなものを追加します

def update_fixtures #rake task method
 Fixture.destroy_all
 get_fixtures.each {|match| Fixture.create(home_team: match, away_team: match )}
end

これを試した後、同じデータがホームとアウェイの列に投稿されます。読み返してみると、その理由がわかります (マッチは home_team データのみを取得しているためだと思います)。アウェイ チームの属性をホーム チームと一緒に渡すにはどうすればよいですか?

これはすべて非常に新しいため、提供されたヘルプは大歓迎です

4

1 に答える 1

1

home_team変数とaway_team両方が同じコモンを使用しているmatchため、両方で同じデータを取得しているため、これは正しいアプローチではありません。

以下をせよ:

アップデート:

あなたのモデル:

 attr_accessible :home_team, :away_team

 def update_fixtures #rake task method
  Fixture.destroy_all
  doc = Nokogiri::HTML(open(FIXTURE_URL))

  home_team = doc.css(".team-home.teams").map {|h| h.text.strip }
  away_team = doc.css(".team-away.teams").map {|a| a.text.strip }

  Fixture.create(home_team: home_team, away_team: away_team)
 end
于 2013-03-12T14:53:43.860 に答える