rakeタスクを作る
menuテーブルが持っていたimageカラムの値を、menus_imagesテーブルのimageカラムに移すrakeタスクを作りました。
rakeタスクは初めて作ったので、手順を書き留めておきます。
タスクを生成する
以下のコマンドを打つと、タスクがlib/tasks配下に生成されます。
$ rails g task タスクの名前
今回自分は以下のコマンドを実行しました。
$ rails g task move_to_menu_image
create lib/tasks/move_to_menu_image.rake
タスク内容を定義
実行したい内容を task タスク名 do ~ end の中に定義していきます。
今回自分はmenuテーブルが持っていたimageカラムの値を、menus_imagesテーブルのimageカラムに移したかったので、以下のように書きました。
namespace :move_to_menu_image do
desc "menusテーブルのimageカラムの値をmenu_imagesテーブルに移行する"
task move_menu_image: :environment do
Menu.all.each do |menu|
menu_image = MenuImage.new(menu_id: menu.id, image: menu.image)
menu_image.save
end
end
end
taskを実行
taskを作成したら、そのタスクを実行すれば、定義した通りの内容が実行されます。
以下のコマンドでrakeタスク一覧を確認できます。
$ rake -vT
自分の場合は以下のようなコマンド名でしたので、これを実行しました。
$ rake move_to_menu_image:move_menu_image
これでrakeタスクを作成して無事実行することができました!!
参考文献
以下の記事を参考にさせていただきました!!