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タスクを作成して無事実行することができました!!

 

 

参考文献

以下の記事を参考にさせていただきました!!

qiita.com