Foros del Web » Programando para Internet » Ruby »

problemas de consulta con Devise

Estas en el tema de problemas de consulta con Devise en el foro de Ruby en Foros del Web. Estoy usando la Gema Devise, para un proyecto Rails el cual le permite a un usuario registrado gestionar tiendas. tengo un controlador location_controller.rb el cual ...
  #1 (permalink)  
Antiguo 10/07/2011, 21:07
Avatar de jam666  
Fecha de Ingreso: septiembre-2009
Ubicación: Isla De Margarita - Venezuela
Mensajes: 428
Antigüedad: 15 años, 3 meses
Puntos: 39
problemas de consulta con Devise

Estoy usando la Gema Devise, para un proyecto Rails el cual le permite a
un usuario registrado gestionar tiendas.

tengo un controlador location_controller.rb el cual debe mostrarme (en
formato json) las tiendas correspondiente al usuario que esta logueado
en ese momento, es decir si yo me registro y me logueo, el sistema debe
mostrarme las tiendas que yo he agregado en la BD.

el controlador contiene lo siguiente:

Código Ruby:
Ver original
  1. class Account::LocationController < ApplicationController
  2.  
  3.   def index
  4.     @account = Account.find(current_account)
  5.  
  6.     render :json => { :locations => @account.locations }
  7.     end
  8.  
  9.   def create
  10.     @location = Location.new(params[:location])
  11.  
  12.     if (@location.save)
  13.       render :json => { :success => true }
  14.     else
  15.       render :json => { :success => false }
  16.     end
  17.   end
  18.  
  19.   def update
  20.     @location = Location.find(params[:id])
  21.  
  22.     if (@location.update_attributes(params[:location]))
  23.       render :json => { :success => true }
  24.     else
  25.       render :json => { :success => false }
  26.     end
  27.   end
  28.  
  29. end

Cuando me logueo con mi usuario de prueba, el sistema me muestra mis
tiendas correspondiente sin problemas, pero el problema viene es cuando
intento agregar una tienda nueva o edito la información de una tienda
que ya esta en la base de datos.

el error que me muestra en la terminal es http://c2.jam.net.ve/qvltvD

segun el error "no se puede encontrar account sin un ID" pero lo curioso
es que esto solo pasa al intentar editar o agregar una cuenta nueva,
luego de este error, si yo cierro session y vuelvo a loguearme se me
muestra sin problemas mis tiendas, y si le hice cambio a la informacion
de una tienda, se me muestra sin problemas.


por lo que veo tal vez el metodo index (el que muestra las tiendas
correspondiente a un usuario logueado en ese momento) no esta
funcionando del todo bien.

le pregunto a ustedes, si ya han trabajado con Devise hay alguna mejor
forma de realizar esta misma consulta sin que tenga errores????

conocen algun proyecto que haga algo similar que pueda revisar???


de antemano les comento que ya revise la wiki de Devise en su repo
github.com

Saludos.
__________________
J.A.M
Jam Blog
  #2 (permalink)  
Antiguo 11/07/2011, 09:45
 
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: problemas de consulta con Devise

Veo que tu controlador Locations está anidado en Account, en la aplicación sería algo así como app/controllers/accounts/locations_controller.rb

Esto me parece que agrega el elemento de los namespaces que maneja Devise y que no veo en el código.

Saludos,
  #3 (permalink)  
Antiguo 11/07/2011, 12:02
Avatar de jam666  
Fecha de Ingreso: septiembre-2009
Ubicación: Isla De Margarita - Venezuela
Mensajes: 428
Antigüedad: 15 años, 3 meses
Puntos: 39
Respuesta: problemas de consulta con Devise

si efectivamente esta asi en la aplicacion...

a cuales metodos namespace te refieres????
__________________
J.A.M
Jam Blog
  #4 (permalink)  
Antiguo 12/07/2011, 09:37
 
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 33
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: problemas de consulta con Devise

Hola, me refería a 'scopes' en lugar de 'namespaces' :P

Pero creo que me fui por otro rumbo.

Viendo el código se entiende que "Account has many locations"

Entonces si ya estás firmado y tienes el current_account gracias a devise y que current_account es una instancia de Account para acceder a locations lo único que tienes que hacer es:

current_account.locations

Y esto aplicado al código queda como

render :json => { :locations => current_account.locations }

Eliminando las línea anterior

@account = Account.find(current_account)

Saludos,
  #5 (permalink)  
Antiguo 12/07/2011, 10:30
Avatar de jam666  
Fecha de Ingreso: septiembre-2009
Ubicación: Isla De Margarita - Venezuela
Mensajes: 428
Antigüedad: 15 años, 3 meses
Puntos: 39
Respuesta: problemas de consulta con Devise

Ya he hecho antes esto y no me ha funcionado.

Ayer agrege en el controlador de arriba la linea:

before_filter :authenticate_account!

para que proteja el controlador y solo lo puedan ver usuario logueados, con esto ya no me aparece el mensaje de error anterior. Ahora el mensaje de error que me aparece es un error 401 Unauthorized cuando intenta agregar nuevos locations o cuando intento editar uno.

de paso si recargo la pagina la session termina :S
es como si en vez de decirle "guarda" le estuviese diciendo "cierra la session".


ni modo!

saludos.
__________________
J.A.M
Jam Blog

Etiquetas: rails, render
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:54.