Ruby on rails 将过期日期与当前日期进行比较后,将对象过期字段设置为true

Ruby on rails 将过期日期与当前日期进行比较后,将对象过期字段设置为true,ruby-on-rails,ruby,ruby-on-rails-3,rake-task,Ruby On Rails,Ruby,Ruby On Rails 3,Rake Task,我正在为我的rails项目编写我的第一个rake任务,我对如何实现这个任务有一个非常模糊的想法 基本上,我的目标是拥有一个自动化流程(Cron+where),每天运行一次这个rake任务 该任务将遍历每个Traveldeal实例,并将其expired_date字段与当前日期进行比较,如果Traveldeal已过期,则会将expired布尔值设置为true 这是我根据在网上找到的其他raketask编写的任务 namespace :traveldeal do desc "Expire Old

我正在为我的rails项目编写我的第一个rake任务,我对如何实现这个任务有一个非常模糊的想法

基本上,我的目标是拥有一个自动化流程(Cron+where),每天运行一次这个rake任务

该任务将遍历每个Traveldeal实例,并将其expired_date字段与当前日期进行比较,如果Traveldeal已过期,则会将expired布尔值设置为true

这是我根据在网上找到的其他raketask编写的任务

namespace :traveldeal do
  desc "Expire Old Traveldeals"
  task :expired_traveldeals => :environment do
    Traveldeal.transaction do
      Traveldeal.all.each { |deal|
        if(deal.expired_date <= Date.today)
           deal.expired = 't'
           deal.save!
        end   
      }
    end
  end
end
名称空间:traveldeal do
描述“过期旧Traveldeals”
任务:过期\u traveldeals=>:环境执行
交易
Traveldeal.all.each{|交易|

如果(deal.expired_date,则需要引用名称空间

rake traveldeal:expired_traveldeals

让我的代码正常工作。结果表明,下一行中的t应该是单引号而不是双引号。
deal.expired='t'
。无论如何,我会给你打勾。谢谢。你知道-我本来想问布尔值,但我自己停了下来。我假设你存储了一个字符串,不想打开那个问题。如果是boolean,您可以稍微简化代码。类似于Traveldeal.where(deal.expired\u date