Ruby on rails Rails控制器id等于

Ruby on rails Rails控制器id等于,ruby-on-rails,Ruby On Rails,我对rails有点陌生,所以请原谅我的noobish问题 我在rails中有一个博客类型的应用程序,使用mongoid,它有一个users部分和comments部分。(评论被嵌入到文章中)。因此,我的comments控制器的delete方法遇到了问题。为了删除它们,我遍历我的集合,查找用户单击的id所在的位置,参数[:id]等于数据库中的id,comment.id。使用print语句,我能够发现这是可行的,并且两个id应该相等。然而,由于某种原因,当我在rails中使用equals操作符(=)时

我对rails有点陌生,所以请原谅我的noobish问题

我在rails中有一个博客类型的应用程序,使用mongoid,它有一个users部分和comments部分。(评论被嵌入到文章中)。因此,我的comments控制器的delete方法遇到了问题。为了删除它们,我遍历我的集合,查找用户单击的id所在的位置,参数[:id]等于数据库中的id,comment.id。使用print语句,我能够发现这是可行的,并且两个id应该相等。然而,由于某种原因,当我在rails中使用equals操作符(=)时,它将注释注册为nil

任何帮助都将不胜感激

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 

comment.id
是一个Bson对象,
params[:id]
是一个字符串

打印时它们匹配,因为显示的是
comment.id.to\u

不管怎样,你宁愿做:

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


我不确定Mongoid。

print“#{comment.id.inspect},#{params[:id].inspect}|”将显示id作为整数和参数作为字符串之间的差异。@Mongoid中的MarlinPierce id是BSON对象,后者在Mongoid中有效。使用Ruby 1.9哈希语法,@article.comments.where(_id:params[:id])。first@novemberkilo总是很有趣的人支持答案,但不要投票:)@apreading我的印象是,投票是为了你觉得有用的答案——或者至少,这是我在堆栈溢出有限时间内一直在做的事情。无论如何,给你:)
@article.comments.where(:_id => params[:id]).first