我正在开发一个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
else
和unless
,但我是新手,所以我不知道从哪里开始获取功能我我正在寻找。
答案 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