2011-06-12 16 views
11

¿Cuál es la mejor manera de agregar un cheque para aceptar términos de uso en una aplicación de rieles?Acepte los términos de uso carriles

Parece que no puedo hacer que validates_acceptance_of funcione correctamente. Agregué un bool a mi modelo de usuario (¿era necesario?). Y luego tiene una casilla de verificación que devuelve verdadero/falso.

Siento que estoy cometiendo un pequeño error. ¿Algunas ideas?

+1

Algunos fragmentos ayudarían en descifrar la solución! – eLobato

Respuesta

22

En su modelo,

validates_acceptance_of :terms 

Si está utilizando attr_accessible en su modelo a continuación, asegúrese de que también agrega,

attr_accessible :terms 

En su opinión,

<%= form_for @user do |f| %> 
    ... 
    <%= f.check_box :terms %> 
    ... 
<% end %> 

Hay no es necesario tener una columna adicional en la tabla de usuarios a menos que planee denegar el acceso a los usuarios que no hayan ac aceptaron los términos del servicio, que no existirán ya que no pueden completar el registro en primer lugar.

+0

Vale la pena señalar que los abogados pueden obligar a mantener un registro de que un usuario ha aceptado t + c's ... Creo que la mejor práctica es guardar un valor booleano en el db. –

15

Esta es una solución de 4 carriles de trabajo:

Términos de servicio no necesita ser una columna en la base de datos

Formulario

= f.check_box :terms_of_service 

modelos/user.rb

validates :terms_of_service, acceptance: true 

Y lo más importante, el diseño desinfectará sus parámetros y los términos de servicio serán eliminados de los parámetros enviados. Por lo tanto:

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    before_filter :configure_permitted_parameters 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) do |u| 
     u.permit(:full_name, 
     :email, :password, :password_confirmation, :terms_of_service) 
    end 
    end 
end 
+1

Si solo va a necesitar la validación cuando el usuario se registra, puede agregar:: crear al validador. – krx

Cuestiones relacionadas