Consulta a una base de datos

hola chicos quiero hacer una consulta a la tabla category que es asi

class CreateCategories < ActiveRecord::Migration
def self.up
create_table :categories do |t|
t.string :name
t.text :description
t.integer :user_id
t.integer :product_id
t.timestamps
end
add_index “categories”, [“user_id”,“product_id”], :name =>
“cat_alt_key”, :unique => true

Category.create :name => "futuro", :user_id => 1
Category.create :name => "acciones", :user_id => 1

Category.create :name => "cestas", :user_id => 2
Category.create :name => "otros", :user_id => 2

para ello en este controlador en el metodo index tengo esto

def index
#render :inline => “<%= debug (params)%>”
valor= params[:user_id]
@category = Category.find_by_user_id(valor)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @categories }
end
end

user_id viene de otro controlador cuando lo pruebo con
render :inline => “<%= debug (params)%>” y tiene el parametro que quiero

ese valor lo guardo en “valor” y con eso hago la busqueda en la base de
datos, que creo que es lo que me esta fallado pero nose porque?? ya que
yo puedo hacer una busqueda con user_id por tenerlo en el modelo

el error que me da es que me dice que estoy evaluando un objeto vacio.

si cambio @category = Category.find_by_user_id(valor) por
@category = Category.find_by_user_id(1) me devuelve solo un valor es
decir futuro

pero no me deberia devolverme los dos que tienen el user_id=1

muchas gracias a todos por su ayuda

saludos maite

2008/5/22 Maite P. [email protected]:

hola chicos quiero hacer una consulta a la tabla category que es asi

el error que me da es que me dice que estoy evaluando un objeto vacio.

Maite, mejor que describir el error de memoria, deberías copiar y
pegar el mensaje de error. ¿Qué objeto está vacio? ¿Quieres decir que
es nil?

si cambio @category = Category.find_by_user_id(valor) por
@category = Category.find_by_user_id(1) me devuelve solo un valor es
decir futuro

pero no me deberia devolverme los dos que tienen el user_id=1

No, y está descrito perfectamente en la documentación que tanto
insistimos que, como mínimo, leáis antes de consultar en la lista. Si
lees la documentación y sigues sin entender porque te devuelve ese
valor, vuelve a consultar.

Como pista, lo que estás utilizando se denomina en la
documentación"attribute-based finders".

Por cierto, para debuguear quizás quieras considerar ruby-debug
(DATANOISE.COM)


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.

ok, muchas gracias, resuelto

@category = Category.find_all_by_user_id(params[:user_id])

gracias por decirme donde buscar :slight_smile:

te hare caso respecto a lo del debug

muchas gracias again