valida la casilla de verificación de aceptación de los términos y la conexión de Facebook

¿Cómo se puede forzar la aceptación de términos y condiciones con facebook connect?

En mi OmniauthCallbacksController probé

@user_ipad.terms = true

La validación del usuario aún falla y el usuario es redirigido al formulario sign_up con un mensaje de error.

/app/controllers/OmniauthCallbacksController

      @user_ipad = UserIpad.new(:password => Devise.friendly_token[0,20])
      @user_ipad.update_with_facebook_infos(omniauth)
      @user_ipad.authentication_ways.build(:provider => omniauth['provider'], :uid => omniauth['uid'])
      @user_ipad.terms = true

      if @user_ipad.save()
        sign_in_and_redirect @user_ipad, :event => :authentication
      else
        session["devise.facebook_data"] = omniauth
        render :action=>'new', :controller=>'user_ipads', :layout => 'empty_layout'
      end

/aplicación/modelos/Usuario

  attr_accessible :terms
  ...
  validates_acceptance_of :terms, :allow_nil => false, :message => "Vous devez accepter les conditions générales d'utilisation", :on => :create

Gracias por tu ayuda, Vincent.

preguntado el 09 de marzo de 12 a las 17:03

1 Respuestas

validates_acceptance_of tiene una opción "aceptar". El documento de Rails dice:

:accept - Especifica el valor que se considera aceptado. El valor predeterminado es una cadena "1", lo que facilita la relación con una casilla de verificación HTML. Esto debe establecerse en verdadero si está validando una columna de la base de datos, ya que el atributo se encasilla de "1" a verdadero antes de la validación.

Entonces, en su caso, debe reemplazar

@user_ipad.terms = true

con :

@user_ipad.terms = "1"

respondido 10 mar '12, 14:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.