0

私はRailsを初めて使用し、最初のrubyアプリケーションを開発してデプロイしようとしています。このプロセス中に、モデルを関連付けずにデータベースに特定のテーブルを作成しました。たとえば、ユーザーロールテーブル。モデルを使用してWebインターフェースでデータを追加する方がよい場合もありますが、それは問題の対象ではありません。表には都市のリストやその他のデータが含まれている場合があります。初期の母集団は明らかです。この作業は「rakedb:seed」を使用して行われます。しかし、このテーブルにさらにデータを追加する必要がある場合はどうなりますか?ベストプラクティスは何ですか?確かに、シードファイルには新しいデータを入力する必要があります。しかし、私はすでに本番環境のデータを含むこのテーブルを持っています。この新しいデータをそこに追加するにはどうすればよいですか?私が頭に浮かぶ唯一の答えは、プレーンSQLを使用することです。しかし、それは「レールウェイ」ではないようです。ありがとうございました。

アップデート。自然な継続として、新しいデータの作成だけでなく、既存のデータの更新と削除も必要です。

4

2 に答える 2

1

seeds.rbに新しいレコードを挿入させることができるのは、それが存在しない場合のみです。例えば

cities = [
  { :name => 'New York'},
  { :name => 'Paris' },
  { :name => 'Tokyo' },
  { :name => 'Saigon' }]
cities.each do |city|
  City.create(city) unless City.exists?(:name => city[:name])
end
于 2012-08-09T15:10:11.600 に答える
0

または

cities.each do |city|
  City.find_or_create_by_name(city[:name])
end

これにより、レコードをチェックするためのクエリが発生しますが、レコードが存在しない場合はレコードが作成されます。使用する場合も同じように機能しますが、前述のように「RailsWay」を使用します。

于 2012-08-09T15:17:32.223 に答える