仍在使用我的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没有失败但实际上没有保存?
感谢。
答案 0 :(得分:0)
以下是我所看到的内容
您正在使用FeedSubscriptionsController删除id为@ feed.first的对象,然后您尝试保存@ feed.first,但@ feed.first指向已删除的对象,因此无法保存它。