这里只是一个猜测,但您是否正在寻找已过期的订阅?如果是这样,我建议不要执行您的计划,而是更改您的应用程序以从一开始就存储到期日期。您可以轻松编写迁移以添加到期日期列并立即填写,然后您可以添加一个非常简单的范围来检查订阅是否已过期。
迁移:
add_column :subscriptions, :expiry_date, :datetime
Subscription.reset_column_information
Subscription.all.each do |subscription|
duration = 0
switch subscription.interval
case 'year'
duration = subscription.duration * 365
case 'month'
duration = subscription.duration * 30
case 'week'
duration = subscription.duration * 7
end
subscription.update_attribute(:expiry_date, subscription.created_at + duration.days)
end
模型:
scope :expired, lambda{ where("expiry_date <= ?", Time.now) }