1

我有一个嵌入文档的项目模型。目前,以下comments_controller 代码将成功为项目添加评论。但是,如果将评论文档推送到 item 的评论数组中失败,我将不知道这一点。

  #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 << 评论不返回真或假:

  #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 回答