1

現在、私はスクリーンスクレイプを介してサッカーの備品を取得しており、レーキタスクが実行されるたびに、すべてのレコードを削除して新しいレコードを保存しています..これをしたくありません.存在しない備品のみを保存したいです. . これまでの私の論理は

def get_fixtures # Get me all Home and away Teams
 doc = Nokogiri::HTML(open(FIXTURE_URL))
 days = doc.css('#fixtures-data h2').each do |h2_tag|
 date = Date.parse(h2_tag.text.strip).to_date
  matches = h2_tag.xpath('following-sibling::*[1]').css('tr.preview')
  matches.each do |match|
    home_team = match.css('.team-home').text.strip
    away_team = match.css('.team-away').text.strip
    kick_off = match.css('td.kickoff').text.strip
     Fixture.create!(home_team: home_team, away_team: away_team, fixture_date: date, kickoff_time: kick_off)
 end
end

終わり

レコードが存在するかどうかを確認する別の方法である、これについて最善の方法は何でしょうか? しかし、これについてどうすればよいかわからない

私の治具モデル

class Fixture < ActiveRecord::Base
  attr_accessible :home_team, :away_team, :fixture_date, :kickoff_time, :prediction_id

  belongs_to :predictions
end

フィクスチャ モデルで validates_uniqueness_of を使用することはできますか?

どんな助けでも大歓迎

4

2 に答える 2

3

いくつかの選択肢:

ワンショット (Rails 3.2.13 以降):

Fixture.where(home_team: home_team, away_team: away_team, fixture_date: date, kickoff_time: kick_off).first_or_create!
于 2013-05-14T20:06:43.010 に答える