2

テーブルの特定の列の値を更新する rake タスクを作成しています。タスクを実行すると、次のエラーが発生します。

uninitialized constant FirstLookSubscription

レーキ タスクのコードは次のとおりです。

namespace :first_look_db do
  desc "Adds one month to the Look Subscription"
  FirstSubscription.where(subscription_state: 'active').each do |t|
        t.update_attribute :next_billing_check, '2013-9-10'

  end
end

私はタスクをレーキするのが初めてで、これを移行として行いたくありません。どんなアドバイスも素晴らしいでしょう!

また、注意: Rails コンソールでこれを実行すると、問題なく実行されます。私の最大の問題は、主任開発者が実行できるように、これを rake タスクに変換することです。

4

1 に答える 1

9

本当にタスク名が必要です。はnamespaceタスクの名前空間を提供しますが、名前でタスクを宣言し、環境をインポートして、ActiveRecords を見つけられるようにします。

namespace :first_look_db do
  desc "Adds one month to the Look Subscription"

  task :add_month_to_look_sub => :environment do
    FirstSubscription.where(subscription_state: 'active').each do |t|
      t.update_attribute :next_billing_check, '2013-9-10'

    end
  end
end

これは、lib/tasks/first_look_db.rake. タスクは次によって呼び出されます。

rake first_look_db:add_month_to_look_sub

またはおそらく:

bundle exec rake first_look_db:add_month_to_look_sub

最初の人がそうするように言った場合。ファイル内で任意の名前を付けることができnamespaceます。あなたが持っていたものから、私にとって意味がありそうな名前をいくつか選んだだけです。taskrake

于 2013-07-24T00:25:55.780 に答える