在Rails中定期更新模型(时间间隔)

时间:2016-05-22 17:08:44

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rubygems

我有一个基本上运行游戏的rails应用程序。我需要充电"在一段时间后我的数据库中的记录的某些属性(让我们说,x秒)。最好的方法是什么?我需要使用宝石吗?

我正在使用rails 4.2.6,ruby 2.3.0和我的ORM的活动记录。

1 个答案:

答案 0 :(得分:3)

在您想要“刷新”的模型中,您可以设置静态方法:

# app/models/product.rb

class Product < ActiveRecord::Base
 // some code

 def self.refresh_stocks
   // some code
 end

 def self.refresh_thumbnails
   // some code
 end

end

然后,我建议您定义一些custom rake tasks

# lib/tasks/myapp.rake
namespace :myapp do
  namespace :products do
    desc 'Refresh products'
    task refresh: :environment do
      Product.refresh_stocks
      Product.refresh_thumbnails
    end
  end
end

然后,您可以使用随时随地的宝石在您的cron选项卡中设置您的日程安排,这要归功于一个不错的dsl:

# config.schedule.rb
every 1.hour do
  rake "myapp:products:refresh"
end

当您使用capistrano部署应用时,一个巨大的胜利:在这种情况下,使用whenever capistrano integration在每次部署时自动刷新您的cron标签。

快乐的日程安排