2

我正在编写一个 rake 任务来更新表中特定列中的值。当我运行任务时,我收到此错误:

uninitialized constant FirstLookSubscription

这是 rake 任务代码:

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

我是 rake 任务的新手,我不想将其作为迁移来执行。任何建议都会很棒!

另请注意:当我在 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 回答