【Rails】カラム追加して、既存のレコードに特定の条件を付けてそのカラムを埋めるメモ
bookseriesという本のシリーズを管理するテーブルがあります。
このテーブルは本の様々な情報を持つbookテーブルと紐付いています。
bookseriesに出版社名のカラムであるpublisherを追加します。
このカラムはbookにある出版社名のカラムと同じレコードを持たせたい。
そんなときに既存のレコードに反映させる方法です。
結論から言うとrunnerを使って条件を書いて読み込ませればOKです。
適当なディレクトリにrunnerする用のファイルを作ります。
lib/addcolumn/publisher_series.rb
Bookseries.all.each do |series| if series.publisher.nil? series.update(publisher: Book.find_by(series: series.title).publisherName) end end
そこで対象のレコードを全て繰り返すeach文を作り、既存のレコードであるnilを判別する条件式の中に対象をupdateする式を書きます。
その後runner
rails runner lib/addcolumn/publisher_series.rb
実行完了のメッセージが表示されたらrails cなどでレコードを確認してみるとできていると思います。