Ruby on rails 使用designe调用sign_out方法作为后台任务

Ruby on rails 使用designe调用sign_out方法作为后台任务,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在构建一个rails应用程序,如果当前时间超过下午6点,我必须自动注销少数用户,如果当前时间超过晚上7点,则必须自动注销其他用户。我正在使用Desive进行身份验证。我没有找到任何解决办法使用设计。Desive在参数中只有一个用于不活动的超时值 我也尝试过延迟的工作。但在异步任务执行过程中,会话哈希无法识别 是否有我缺少的某种明显的解决方案?从1.5.2版开始,您可以在Desive上动态设置过期期限。 也许你可以试试这样: class User < ActiveRecord::Bas

我正在构建一个rails应用程序,如果当前时间超过下午6点,我必须自动注销少数用户,如果当前时间超过晚上7点,则必须自动注销其他用户。我正在使用Desive进行身份验证。我没有找到任何解决办法使用设计。Desive在参数中只有一个用于不活动的超时值

我也尝试过延迟的工作。但在异步任务执行过程中,会话哈希无法识别


是否有我缺少的某种明显的解决方案?

从1.5.2版开始,您可以在Desive上动态设置过期期限。

也许你可以试试这样:

class User < ActiveRecord::Base
  devise (...), :timeoutable

  def timeout_in
    if should_logout_at_19
      timeout_period_for 19
    elsif should_logout_at_18
      timeout_period_for 18
    else
    ...
    end
  end

  # period in seconds until next session expiration hour.
  def timeout_period_for(given_hour)
    next_time = if Time.now.hour > given_hour
      Date.tomorrow.to_time.change(hour: given_hour)
    else
      Date.today.to_time.change(hour: given_hour)
    end
    next_time - Time.now
  end

  def should_logout_at_19
    # user criteria to logout at 7 PM
  end

end

设计使用签名cookie。你可以把过期添加到cookies中。你试过了吗?