7

シード コマンドを複数回実行したときに重複レコードが作成されないように、シード ファイルに変更したいコードがあります。これが可能になるように、シードファイルから以下のコードを適応させる方法はありますか? 私が間違っていない限り、find_or_create_by メソッドはここでは機能しないようです。

data_file = Rails.root.join('db/data/data.csv')

CSV.foreach(data_file) do |row|
  TownHealthRecord.create(
    city: row[0],
    state: row[1],
    country: row[2],
    zip_code: row[3],
    area_code: row[4]
    )
end
4

1 に答える 1

7

検証を使用します。重複したレコードが必要ない場合は、1 つ以上のフィールドの一意性を検証します。あなたにtown_health_record.rb

class TownHealthRecord
  validates_uniqueness_of :city
  validates uniqueness_of :health, scope: :person # If you wanted to validate a combination of fields
end

追加されていない側では、.create!エラーが発生します。.createしない。save!とについても同様.update_attributes!です。

于 2013-12-12T00:46:00.017 に答える