1

ドキュメントが埋め込まれた Item モデルがあります。現在、次の comments_controller コードはアイテムにコメントを正常に追加します。ただし、アイテムのコメント配列へのコメント ドキュメントのプッシュが失敗した場合、これはわかりません。

  #this does work, but i do not know if the push fails
  def create
    comment = Comment.new(:text => params[:text])
    @item.comments << comment
    render :text => comment
  end

このようなものが欲しいのですが、 @item.comments << コメントは true または false を返しません。

  #this does not work
  def create
    comment = Comment.new(:text => params[:text])
    if @item.comments << comment
      render :text => comment
    else
      render :text => 'oh no'
    end
  end

ドキュメントのプッシュが失敗しても、例外はスローされません。

  #this does not work
  def create
    begin
      comment = Comment.new(:text => params[:text])
      @item.comments << comment
      render :text => comment
    rescue Exception => e
      render :text => 'oh no'
    end
  end

ありがとう!

4

1 に答える 1

1

コメントの項目を設定して、それを永続化する必要があります。comment.saveは、保存がうまくいった場合はtrueを返し、そうでない場合はfalseを返します。必要に応じて、両方のシナリオを処理できます。

def create
  comment = Comment.new(:text => params[:text])
  comment.item = @item  
  if comment.save
    render :text => "yay"
  else
    render :text => "oh no"
  end
end
于 2012-09-28T15:36:21.353 に答える