Rails中的试用帐户重定向

时间:2016-02-09 23:51:10

标签: ruby-on-rails redirect controller

我正在开发一个rails应用程序,我希望包含一个允许用户在没有信用卡的情况下进行3天免费试用的功能。我想我应该在他们采取行动时创建一个重定向,在这种情况下,最初使用此代码创建一个新文档:

  def new
    if current_user.created_at <= 3.days.ago
      redirect_to new_charge_path
    else
      @document = Document.new
      @document.user_id = current_user.id
    end
  end

对于超过3天的任何帐户,这都适用。

但是,我还需要检查用户是否已经订阅,或者帐户长度超过3天的任何用户将通过同一循环重定向。我的每个用户都有一个与它们关联的subscribed布尔字段,在执行条带API时会更改为true

这是我的第二次尝试,仍然会导致循环:

  def new
      if current_user.created_at <= 3.minutes.ago
        redirect_to new_charge_path
      else
        @document = Document.new
        @document.user_id = current_user.id
      unless current_user.subscribed = 'true'
      end
      end
  end

我认为我在这种情况下错误地使用了if elseunless,但我是新手,所以我不知道从哪里开始获取功能我我正在寻找。

1 个答案:

答案 0 :(得分:0)

我认为你需要把它翻到

current_user.created_at >= 3.minutes.ago

此外,如果您想要在每个操作中使用此操作,则应在application_controller中编写方法,并将该方法称为before_action

您的应用程序控制器中有类似的内容:

def check_subscription
    if current_user.created_at <= 3.days.ago && !current_user.subscribed
      redirect_to new_charge_path
    end
end

然后你可以拨打before_action :check_subscription