0

私はレールに少し慣れていないので、お粗末な質問はご容赦ください。

ユーザーセクションとコメントセクションがあるmongoidを使用したRailsのブログタイプのアプリケーションがあります。(コメントは記事に埋め込まれています)。そのため、コメントコントローラーの削除メソッドに問題がありました。それらを削除するために、コレクションをトラバースし、ユーザーがクリックしたIDであるparams [:id]がデータベース内のIDであるcomment.idと等しい場所を探します。printステートメントを使用して、これが機能し、2つの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 
4

1 に答える 1

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についてはよくわかりません。

于 2012-05-03T09:13:37.560 に答える