El id del controlador Rails es igual a

Soy un poco nuevo en los rieles, así que disculpe la pregunta novata.

Tengo una aplicación tipo blog en Rails usando mongoid que tiene una sección de usuarios y una sección de comentarios. (Los comentarios están incrustados dentro del artículo). Así que estaba teniendo problemas con el método de eliminación de mi controlador de comentarios. Para eliminarlos, recorro mi colección y busco dónde está la identificación en la que el usuario hizo clic, los params[:id] son ​​iguales a la identificación en la base de datos, el comment.id. Usando declaraciones de impresión, pude descubrir que esto funciona y que las dos identificaciones deberían ser iguales. Sin embargo, por alguna razón, cuando uso el operador de igualdad (==) en los rieles, el comentario se registra como nulo.

¡Cualquier ayuda sería apreciada!

def destroy
    @article = Article.find(params[:article_id])
    logger.debug(@article)
    @article.comments.each do |comment|
        logger.debug(comment)
        print comment.id.
        print ", "
        print params[:id]
        print " | "

        if comment.id.equal? params[:id]
            comment.destroy unless comment.nil?

        end 
    end 
    respond_to do |format|
        format.html { redirect_to "/" }
        format.js
    end 
end 

preguntado el 03 de mayo de 12 a las 10:05

1 Respuestas

comment.id es un objeto Bson, params[:id] es una cuerda.

Coinciden cuando imprime porque lo que se muestra es comment.id.to_s

De todos modos, preferirías hacer:

@article.comments.where(:id => params[:id]).first

o:

@article.comments.where(:_id => params[:id]).first

No estoy seguro de Mongoid.

contestado el 03 de mayo de 12 a las 10:05

print "#{comment.id.inspect}, #{params[:id].inspect} | " mostrará la diferencia entre el id como un número entero y el parámetro como una cadena. - marlín perforar

@MarlinPierce id en mongoid son objetos BSON - buceo en apnea

Este último trabaja en mongoid. Utilizando la sintaxis hash de Ruby 1.9, @article.comments.where(_id: params[:id]).first - noviembrekilo

@novemberkilo siempre la gente divertida apoya las respuestas pero no las vota :) - buceo en apnea

@apneadiving Tenía la impresión de que los votos a favor son para respuestas que le resultan útiles, o al menos, eso es lo que he estado haciendo durante mi tiempo limitado en Stack Overflow. En cualquier caso, aquí tienes :) - noviembrekilo

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