Just a guess here, but are you looking for subscriptions that have expired?
If so I would suggest instead of doing what you're planning, change your application to store the expiry date from the outset. You can easily write a migration to add an expiry date column and fill it in now, then you can add a really simple scope to check if a subscription has expired.
Migrate:
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
Model:
scope :expired, lambda{ where("expiry_date <= ?", Time.now) }