我对铁轨有点新意,所以请原谅这个愚蠢的问题。
我在rails中使用具有用户部分和评论部分的mongoid的博客类型应用程序。 (评论嵌入在文章中)。所以我的评论控制器的删除方法有问题。为了删除它们,我遍历我的集合,并查找用户单击的id,params [: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
答案 0 :(得分:1)
comment.id
是一个Bson对象,params[:id]
是一个字符串。
它们在您打印时匹配,因为显示的内容为comment.id.to_s
无论如何你宁愿这样做:
@article.comments.where(:id => params[:id]).first
或者:
@article.comments.where(:_id => params[:id]).first
我不确定Mongoid。