Можно ли автоматически изменять роль учетных записей пользователей (с помощью Cancan) через определенное время? - PullRequest
1 голос
/ 30 августа 2011

В приложении, которое я создаю, пользователь может иметь учетную запись, и каждая учетная запись может быть бесплатной или премиальной (с использованием ролей и драгоценного камня Cancan).

Я хочу иметь возможность обновить бесплатные учетные записи до премиальной роли и выбрать продолжительность, например, 2 месяца, затем по истечении 2 месяцев учетная запись автоматически вернется к бесплатной роли.

Возможно ли это?

1 Ответ

1 голос
/ 30 августа 2011

Вы сможете решить эту проблему с помощью фоновой системы заданий, такой как Resque или Delayed Job.

Вы можете создать ночное задание, которое проверяет все ваши бесплатные учетные записи и проверяет метку времени обновления и отменяет ролькогда срок их бесплатной пробной версии истекает.

Ниже приведен пример того, как будет выглядеть этот помощник Account.revoke_expired_premium_roles (), который вы будете вызывать в ночной фоновой работе или в задаче cron:

class Account < ActiveRecord::Base
  # assumes Timestamp field trial_expires_at set to 2.months.from_now by default on trial start
  named_scope :trial_expired, lambda {{ :conditions => ['trial_expires_at <= ?', Time.now] }}

  def self.revoke_expired_premium_roles
    trial_expired.find_each {|account| account.revoke_premium_role}
  end

  def revoke_premium_role
    # Remove can-can authorization here
  end
end
...