ruby - 用于更新列值的 Rake 任务

标签 ruby ruby-on-rails-3 rake

我正在编写一个 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 文件中随意命名 namespacetask。我只是从你的名字中挑选了一些对我来说有意义的名字。

关于ruby - 用于更新列值的 Rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823005/

相关文章:

ruby-on-rails - 未找到 Rails 路线但显示在 rake route

mysql - rake 数据库 :create only creating development database

ruby-on-rails - 在 Ruby on Rails 中使用迁移

ruby-on-rails-3 - Mongoid、Heroku、Device、MongoHQ 和 Rails 的 MongoDB 错误

Ruby 环境不工作 rbenv

ruby - 如何从其他 Ruby 脚本调用标准 Rakefile 中定义的 Rake 任务?

ruby - 如何将这个 'hash-like'字符串转换成键值对

ruby - 在 Ruby 中定义求和函数

ruby - 优化用于将字符串解析为数值的 ruby​​ 代码

sql - Rake 任务截断 Rails 3 中的所有表