Rails 控制器中的错误处理,用于将嵌入的 Mongoid 文档添加到模型



我有一个嵌入文档的项目模型。 目前,以下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 <<评论不返回真或假:

  #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

谢谢!

您必须设置注释的项目,然后保留它。 如果保存顺利,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

最新更新