2017-08-21 8 views
1

私は、ユーザーの無料試用が終了したかどうかを自動的にチェックして、自動的に有料購読にアップグレードするスケジューラー機能を作成しました。問題は、私は、コマンドラインからタスクを実行しようとすると、次のエラーが発生することである:いいえメソッドエラー:未定義メソッド `find_each 'for User:Class

No Method Error: undefined method `find_each' for User:Class

task :process_trial_accounts => :environment do 
    puts "Processing Trial Users" 
    User.find_each do |user| 

plan_id = MailFunnelsUser.get_user_plan(user.client_id) 
if plan_id == -99 

    products = Infusionsoft.data_query('SubscriptionPlan', 100, 0, {}, [:Id, :PlanPrice]) 

    product = products.select { |product| product['Id'] == 2 }[0] 

    unless product 

    end 

    price = product['PlanPrice'] 

    cardId = 0 
    current_year = Date.today.strftime('%Y') 
    current_month = Date.today.strftime('%m') 
    creditCardId = Infusionsoft.data_query('CreditCard', 
             100, 
             0, 
             {'ContactId' => user.clientid, 'ExpirationYear' => '~>=~' + current_year, 'Status' => 3}, 
             [:Id, :ContactId, :ExpirationMonth, :ExpirationYear] 
).each do |creditCard| 

    if Integer(creditCard['ExpirationYear']) == Integer(current_year) 
     if Integer(creditCard['ExpirationMonth']) >= Integer(current_month) 

     cardId = creditCard['Id'] 
     end 
    else 

     cardId = creditCard['Id'] 
    end 
    end 

    if cardId != 0 

    subscription_id = Infusionsoft.invoice_add_recurring_order(user.clientid, true, 2, 4, cardId, 0, 0) 


    invoice_id = Infusionsoft.invoice_create_invoice_for_recurring(subscription_id) 

    upgrade_response = Infusionsoft.invoice_charge_invoice(invoice_id, "Automatic Upgrade to 1000 Subscriber Tier", cardId, 4, false) 

    if upgrade_response[:Successful] 
     # Tag for 1000 sub tier level plan 
     new_tier_level_tag = 106 

     # Tags to remove from user 
     trial_ended_tag = 145 
     failed_payment_tag = 120 

     # Remove Tags from user for failed payment and Trial ended 
     Infusionsoft.contact_remove_from_group(user.clientid, trial_ended_tag) 
     Infusionsoft.contact_remove_from_group(user.clientid, failed_payment_tag) 


     # Add tag to user for 1000 subscribers tier level 
     Infusionsoft.contact_add_to_group(user.clientid, new_tier_level_tag) 


    end 

    end 

else 
    next 
end 

end 





end 

私のアプリケーションは、Herokuの上でホストされていると私はそこを通じてジョブを実行しようとしています。どんな助けもありがとう!ありがとう!

+1

'find_each'方法' ActiveRecord'方法であるので、あなたのUserクラスはActiveRecordのから継承されなければなりません。このORMを使用してもよろしいですか? – zauzaj

+1

ユーザークラスコードを入力してください。 – Ptr

答えて

0

find_eachメソッドはActiveRecordメソッドです。つまり、UserクラスはActiveRecordから継承する必要があります。この種のORMを使用していない場合は、find_eachを使用することはできません。

Userクラスのコードベースを提供するともっと簡単になります。

乾杯

関連する問題