2011-06-16 7 views
6

¿Alguien me puede decir la mejor manera de implementar un período de prueba de 30 para una aplicación web Ruby on Rails, como hace Basecamp from 37signals?Crear un período de prueba para la aplicación web Ruby on Rails

En el momento en que tienen un usuario signin hasta la página que a su vez da al usuario acceso a un panel de control que muestra información actualizada sobre sus productos/precios etc.

me gustaría que los usuarios puedan registrarse y tener aplicación completa funcionalidad que luego expira después de 30 días.

Gracias

+0

Hola a todos, gracias por las respuestas. Al hacer un poco de investigación me topé con [link] (http://railskits.com/saas/) que contenía todo lo que necesitaba. Pude importar el complemento SaaS a mi aplicación existente y obtener un período de prueba y un sistema de pago (como 37 señales) funcionando bastante rápido después de algunos ajustes. –

+0

¿Podría compartir el enlace que encontró y usó? – Marklar

Respuesta

6

simplemente almacenar la fecha en que se creó la cuenta de usuario, junto con una bandera booleana si la cuenta ha sido pagada.

O use un campo de fecha en el que establece el último día en que el usuario tiene acceso a la funcionalidad completa (y al registrarse establece esta fecha en 30 días a partir del registro).

En cualquier caso, lea los datos al iniciar sesión y muestre contenido diferente según el mismo.

Esa sería mi solución; pero supongo que podría haber algo mejor y más fácil.

Editar En general estoy de acuerdo con lo que @Roland dijo en su respuesta. La bandera booleana se puede reemplazar con una información sobre el nivel de la cuenta, sin embargo, para eso usaría un entero (0 que significa prueba, 1 básico, 2 pro, etc.) sobre una etiqueta de cadena.

También puede hacer algo automáticamente con las cuentas que no se han pagado en un día determinado al programar una tarea de rake en cron. Por hacer algo para me refiero a cosas como: invalidar, borrar, cambiar de nivel de base, etc.

0

La razón por la que me planteo es establecer un campo trial_started_at para el usuario, y comprobar esto cada vez que el usuario inicia sesión, a menos que hayan comprado.

0

Qué dolor y Ant dijeron, y pero en lugar de un uso booleano una etiqueta para los usuarios: Trial, básicos, etc. Pro

0

Como sugiere tristeza:

utilizar un 'campo de fecha en la que establece el último día en que el usuario tiene acceso a la funcionalidad completa> (y al registrarse establece esta fecha en 30 días a partir de la fecha de registro).

sólo repost destacar que esta es la mejor opción en lugar de almacenar cuando comience el juicio, el código para el control de la primera es: trial_expiry > Time.now, mientras que el código para comprobar la fecha del juicio iniciado tendría que ser más complicado , y hace que sea difícil atender a diferentes pruebas de longitud.

Puede borrar la fecha de caducidad cuando compra una cuenta, no es necesario verificar un campo separado. Algún tipo de nivel de usuario sigue siendo una buena idea, pero no es necesario para el sistema de prueba.

8

La creación de la aplicación Rails durante un período de prueba de x días es bastante fácil.

desea implementar un período de prueba de 30 días para sus usuarios a continuación, siga:

paso 1: crear estos métodos en application_controller.rb como

# 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 

Paso 2: Visualizar el Resto de Trial Días en 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> 

paso 3: en cada controlador de escritura

class YourController < ApplicationController 
before_filter trial_expired? 
end 

de modo que si la prueba ya ha expirado no le dará acceso a su página, pero redirigirá al usuario a la página de mensaje de error.

Ahora crea un expira el controlador y realiza todas las funciones requeridas allí. En la página de caducidad> página de índice aparece un mensaje de error como "Su período de prueba se ha completado, suscríbase ................." lo que quiera.

Esto funciona para mí.

+0

Siguiendo este patrón, pero sigue obteniendo "método undefined trial_expired?" cuando se agrega al UserController. ¿Alguna idea de por qué el controlador de usuarios no reconocería la versión de prueba? ¿método? – ncarroll

Cuestiones relacionadas