【问题标题】:Create a trial period for ruby on rails web app为 ruby​​ on rails Web 应用程序创建试用期
【发布时间】:2011-06-16 12:45:46
【问题描述】:

谁能告诉我为 ruby​​ on rails web 应用程序实施 30 次试用期的最佳方法,就像 Basecamp from 37signals 所做的那样?

目前我有一个用户注册页面,然后用户可以访问仪表板,显示有关其产品/定价等的当前信息。

我希望用户能够注册并拥有完整的应用功能,然后在 30 天后过期。

谢谢

【问题讨论】:

  • 大家好,感谢您的回答。在做一些研究时,我偶然发现了link,它包含了我需要的一切。我能够将 SaaS 插件导入到我现有的应用程序中,并在经过一些调整后快速启动并运行试用期和支付系统(很像 37signals)。
  • 能否分享您找到并使用的链接?

标签: ruby-on-rails ruby web-applications


【解决方案1】:

为 x 天试用期创建 Rails 应用程序非常简单。

您希望为您的用户实施 30 天的试用期,然后按照以下步骤操作:

第 1 步:在 application_controller.rb 中创建这些方法

# application_controller.rb
class ApplicationController < ActionController::Base
 # make expire_on method available for all the controllers
 helper :all
 helper :remaining_days


 # find the remaining trial days for this user
 def remaining_days
  ((current_user.created_at + 30.days).to_date - Date.today).round
 end

 def trial_expired?
  # find current_user who is login. If you are using devise simply current_user will works
  # now that you have remaining_days, check whether trial period is already completed
  if remaining_days <= 0
     redirect_to expires_path
  end
 end
end

第 2 步:在 application.html.erb 中显示剩余试用天数

# application.html.erb
<html>
  <head></head>
  <body>
    <span style="color:red"> Your trial period will expire on <%= remaining_days %></span>  Days. Suscribe
  </body>
 </html>

第 3 步:在每个控制器中写入

class YourController < ApplicationController
 before_filter trial_expired?
end

这样,如果试用期已经过期,它将无法访问您的页面,而是将用户重定向回错误消息页面。

现在创建一个 expires 控制器 并在那里执行所有需要的功能。在 expires > index 页面中显示一些错误消息,例如“您的试用期已结束,请订阅......”任何你喜欢的。

这对我有用。

【讨论】:

  • 遵循这种模式,但不断收到“未定义的方法 trial_expired?”添加到用户控制器时。为什么用户控制器无法识别 trial_expired 的任何想法?方法?
  • 嗨@przbadu,感谢您的回答,我有一个问题是,没有真正需要对remaining_days 方法中的值进行四舍五入,对吗?想不出两个to_dates 之间的差异是浮动的情况。谢谢
【解决方案2】:

只需存储用户帐户的创建日期,以及帐户是否已付款的布尔标志。

或使用日期字段,您可以在其中设置用户有权访问全部功能的最后一天(在注册时,您将此日期设置为注册后 30 天)。

无论如何,在登录时读取数据并根据它显示不同的内容。

这将是我的解决方案;但我想可能会有更好更简单的方法。

编辑我大体上同意@Roland 在他的回答中所说的话。布尔标志可以替换为有关帐户级别的信息,但是为此我会在字符串标记上使用整数(0 表示试用、1 基本、2 专业等)。

您还可以通过在 cron 中安排 rake 任务来自动对在给定日期未付款的帐户执行某些操作。 做某事我的意思是:无效、删除、将级别更改为基本等。

【讨论】:

    【解决方案3】:

    我这样做的原因是为用户设置一个trial_started_at 字段,并在每次用户登录时检查这个,除非他们已经购买。

    【讨论】:

      【解决方案4】:

      Sorrow 和 Ant 所说的,但不是布尔值,而是为用户使用标签:Trial、Basic、Pro 等。

      【讨论】:

        【解决方案5】:

        正如悲伤所暗示的那样:

        使用“日期字段,您可以在其中设置用户有权访问全部功能的最后一天>(在注册时,您将此日期设置为注册后 30 天)。

        我只是为了强调这是更好的选择,而不是在试用开始时存储,检查前者的代码是:trial_expiry &gt; Time.now,而检查试用开始日期的代码必须更加复杂,并且难以满足不同长度的试验。

        您可以在他们购买帐户时清除到期日期,无需检查单独的字段。某种用户级别仍然是个好主意,但对于试用系统来说不是必需的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多