我正在编写一个 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 任务,以便我们的主要开发人员可以运行它
最佳答案
您确实需要一个任务名称。 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
如果第一个告诉你这样做。您可以在 rake
文件中随意命名 namespace
和 task
。我只是从你的名字中挑选了一些对我来说有意义的名字。
关于ruby - 用于更新列值的 Rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823005/