railsで全てのアカウントに自動投稿を一斉に行わせたい
ruby on railsで
モデルに対して定時的な処理(rakeタスク)を書いているのですが、
一斉に実行される処理の仕方がわからず困っています。
例えば、Accountモデルにはアカウント(レコード)が101件あり、
それぞれのアカウントには数量残高が記録されています。
例外(回収役となる1件アカウント)を除き、
それぞれのアカウントの残高から1%の数量を算出して回収し、
回収した数量とアカウントidを1つのレコード(取引記録)として、計100件のレコードを
AccountTransaction(取引記録)モデルに記録(自動投稿)したいと思っています。
Accountモデル
・id(主キー)
・balance(残高数量)
AccountTransactionモデルには、
・id(主キー)
・amount(取引数量)
・withdrawal_account_id(支払側の口座id)
・deposit_account_id(回収役で受取側の口座id)
この場合、どのような実装をすれば実現できるのか教えて頂ければ幸いです。
AccountTransaction側のモデルファイル
class Account < ApplicationRecord
belongs_to :user
has_many :withdrawal_account_transaction, class_name: 'AccountTransaction', :foreign_key => 'withdrawal_account_id'
has_many :deposit_account_transaction, class_name: 'AccountTransaction', :foreign_key => 'deposit_account_id'
end
AccountTransaction側のモデルファイル
class AccountTransaction < ApplicationRecord
belongs_to :withdrawal, class_name: 'Account', :foreign_key => 'withdrawal_account_id'
belongs_to :deposit, class_name: 'Account', :foreign_key => 'deposit_account_id'
end
lib/tasksのrakeファイル。
namespace :currency_cycle do
desc "全アカウント残高から一斉回収"
task :cycle => :environment do
begin
ActiveRecord::Base.transaction{
#取引アカウントにレコードを一括作成(実験中)
AccountTransaction.where.not(id: 19).create(
deposit_account_id: 19,#回収役の口座id、固定なので直接idを記入している
withdrawal_account_id: ?????????????",
amount: ???????????
)
}
end
end
end