Невозможно удалить внедренный элемент с Mongoid - PullRequest
0 голосов
/ 04 сентября 2011

Все еще работая над моим приложением Rails / MongoDB, у меня есть еще одна проблема. На этот раз я могу создавать встроенные документы, но не могу их удалить, хотя я делал то, что было сказано в другой теме Stackoverflow (/3976362/udalit-vnedrennyi-dokument-v-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. Я также попытался заменить «success = @ feed.first.save» на «@ self.save»: в этом случае он возвращает false, но без дальнейших объяснений.

(я знаю, что для того, чтобы логика этого контроллера была идеальной, я должен зацикливаться на массиве @feed, и я сделаю это, как только он начнет работать ^^, проще отлаживать таким образом)

Итак, есть ли способ узнать, почему @ ßelf.save не работает или почему @ feed.first.save не дает сбоя, но на самом деле тоже не сохраняет?

Спасибо.

1 Ответ

0 голосов
/ 05 сентября 2011

Вот что вы делаете, как я вижу

Вы используете FeedSubscriptionController для удаления объекта с идентификатором if @ feed.first, затем пытаетесь сохранить @ feed.first, но @feed.сначала указывает на уже удаленный объект, поэтому его не удается сохранить.

...