无法使用Mongoid删除嵌入的元素

时间:2011-09-04 18:46:00

标签: ruby-on-rails mongodb mongoid

仍在使用我的Rails / MongoDB应用程序,我还有另外一个问题。 这一次,我可以创建嵌入式文档,但不能删除它们,尽管我一直在做其他Stackoverflow主题中所说的内容(http://stackoverflow.com/questions/3693842/remove-an-embedded-document -in-mongoid)

这是我的控制器:

class FeedSubscribtionsController < ApplicationController
  has_to_be_connected

  def create
    if session[:user_id] != params[:id]
      @self        = current_user
      attributes   = { :user => @self, :userId => params[:id], :feedId => params[:feed] }
      subscribtion = FeedSubscribtion.create attributes
      success      = subscribtion.save
      render json: { :success => success, :feed => params[:feed] }
    end
  end

  def destroy
    success     = false
    if session[:user_id] != params[:id]
      @self     = current_user
      uid, fid  = params[:id], params[:feed]
      @feed     = @self.feed_subscribtions.where :userId => uid, :feedId => fid
      if @feed.count > 0
    @self.feed_subscribtions.delete @feed.first.id.to_s
        success = @feed.first.save
      end
    end
    render json: { :success => success, :feed => params[:feed] }
  end
end

最奇怪的是,一切似乎都顺利:在渲染的JSON对象中,成功等于true。 我还尝试用“@ self.save”替换“success = @ feed.first.save”:在这种情况下,它返回false,但没有进一步的解释。

(我知道对于这个控制器背后的逻辑是完美的,我应该在@feed数组上循环,我会在它开始工作后^^它更容易调试那种方式)

那么,有什么方法可以找出为什么@ßelf.save失败,或者为什么@ feed.first.save没有失败但实际上没有保存?

感谢。

1 个答案:

答案 0 :(得分:0)

以下是我所看到的内容

您正在使用FeedSubscriptionsController删除id为@ feed.first的对象,然后您尝试保存@ feed.first,但@ feed.first指向已删除的对象,因此无法保存它。