2010/3/26 NachoKB <[email protected]>: > Estimados, > tengo un caso frente al que me quede sin ideas prácticamente. > > Simplificando, tengo un model User que tiene una validación de uniqueness > sobre el atributo login. Ahora bien, debido a que la unica forma de > garantizar unicidad es con un index unique en la base, lo agregué > (básicamente, ActiveRecord no puede garantizar la unicidad por un tema de > concurrencia). > > Ahora mi problema es que la registración de usuario tiene dos pasos > (primero se crea y luego se verifica). Mi problema es que necesitaría que no > valide como erroneo en el caso que exista otro usuario con el mismo login, > pero estando ese usuario aun no activado (digamos "pendiente"). O sea, > quisiera que la verificación de existencia la realice no sobre toda la > tabla, sino, por ejemplo, usando un named_scope. > > Rápidamente cree un método "validates_uniqueness_of_with_named_scope" para > que la verificación del "exists?" la realice sobre un named scope (si fue > especificado), idéntico en todo lo demás al "validates_uniqueness_of" > standard, y funcionó bárbaro. > > Por supuesto, en este caso aunque el validates sea correcto, la base de > datos detecta duplicación por el index unique... > > No se me ocurre manera de soportar este caso sin perder el resguardo del > index unique... ¿alguna idea? ¿cómo lo hacen? > > Perdón la longitud para explicar algo tan simple :D. > > nachokb
Che, y para qué querés confirmar el email de los usuarios? Tenés tantos spammers registrándose que es un problema? Porque sino, no hay cosa más molesta que registrarme a un sitio y tener que ir a fijarme en el mail y hacer el confirmation mientras puteo porque es un sitio QUE NO NECESITA CONFIRMARME PARA NADA MÁS QUE PARA SATISFACER UN CAPRICHO SIN SENTIDO. Er, yo que sé, a mi me gusta registrarme en un sitio y automáticamente poder usarlo. Capaz que si tenés problemas de spam o alguna función del sitio es medio sensible (mandarle mensajes a otros usuarios, o recibir notificaciones por email, ponele), podés hacer que solo esas acciones estén restringidas a usuarios confirmados, entonces básicamente me dejás entrar al sitio y usarlo hasta que de veras necesitás mi email (o confirmar que soy una persona, e igual, confirmar el email es un método pésimo para detectar spammers hoy en día, es bien fácil scriptear algo que confirme mails si estuvieses haciendo un spambot…) Y pensá también esto: te registrás y podés usar el sitio inmediatamente. Genial! Lo usás, jugás un rato, te aburrís, salís. Y después saltás a la ventana del email y ves que tenés un mail del sitio para confirmarte (pero que no te trancó para nada en las funciones básicas que querías hacer), hacés click para sacarte eso de arriba, y te lleva a una página diciendo "ahora podés hacer estas otras cosas, gracias por confirmarte" y bam, con un poco de suerte y un buen diseño, el usuario está involucrado en tu sitio, jugando con las cosas nuevas que le diste. Double win :) Yo que sé, yo en lo posible saco los flows de confirmación de los sitios, nunca son necesarios. -foca > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
