Ruby on rails rails更新方法不工作

Ruby on rails rails更新方法不工作,ruby-on-rails,ruby,mongodb,ruby-on-rails-4,mongoid,Ruby On Rails,Ruby,Mongodb,Ruby On Rails 4,Mongoid,我正在尝试更新b对象。每当我运行update方法时,它都会更新b对象,但不会影响数据库。我曾试图找到解决方案,但并不是找不到它的解决方案。请告诉我我做错了什么,如果你们中任何一个看到这个问题的人能够找到它的解决方案,请把这个解决方案交给我 data = params[:d] #data1 = params[:d1] data2 = data1 request_bookmarked = Request.getRequest(data) bookmarked_

我正在尝试更新b对象。每当我运行update方法时,它都会更新b对象,但不会影响数据库。我曾试图找到解决方案,但并不是找不到它的解决方案。请告诉我我做错了什么,如果你们中任何一个看到这个问题的人能够找到它的解决方案,请把这个解决方案交给我

    data = params[:d]
    #data1 = params[:d1]
    data2 = data1
    request_bookmarked = Request.getRequest(data)
    bookmarked_against_Request = Request.first
    request_bookmarked_2 = request_bookmarked
    bookmarked_against_Request_2 = bookmarked_against_Request
    b = Bookmark.where(request_id: bookmarked_against_Request[:_id]).first()

    if b !=  nil
      flag = false
      ind = 0;
      b[:corsponding_requests].each.with_index do |t , index|
        if t == request_bookmarked[:id]
          flag = true
          ind = index
        end
      end
      if flag ==  true 
    b1 = b
    #b1.delete_at(ind)#request_bookmarked[:_id])
    b1[:corsponding_requests].delete(request_bookmarked[:id])
    bookmarked_against_Request_2[:favourites].delete(request_bookmarked[:_d])
    request_bookmarked[:favourites_of].delete(bookmarked_against_Request[:_id])

    b2 = Hash.new
    b2['corsponding_requests'] = Array.new
    b2['corsponding_requests'].push(*b1[:corsponding_requests])
    #b.update(Hash['corsponding_requests' , b1[:corsponding_requests]])
    if b.update_attributes(b2)
      flash[:notice] = "Request has been un bookmarked ."
    end
rb(书签模型类)

类书签
include Mongoid::Document
包含Mongoid::时间戳
字段:所有者请求,类型:字符串
字段:请求id,类型:字符串
字段:响应请求,类型:数组

类如果对象以任何方式无效,更新方法将失败。见:


您是否尝试过检查是否存在阻止保存的错误?试着通过放置或粘贴一个binding来检查b.errors。在你的更新发生之前就开始窥探

你的b有效吗?您应该首先检查它。有效是什么意思?假设您正在从数据库加载
b
,您是否执行了此检查。如果您能说出如何创建b对象,更容易理解是什么导致了问题。如果您尝试在Rails控制台中对这些对象执行update_属性,会发生什么情况?它会更新b对象,但不会影响数据库@Bob。请告诉我puts'ing或binding.pry方法是如何工作的,因为我从未尝试过它。谢谢你,如果你有一个gem文件,请为
gem'pry'
添加一行。另一方面,您可以从命令行执行
gem安装pry
。然后,您可以在要调查的任何方法代码中添加
binding.pry
。这类似于在Javascript代码中添加
调试器
。查看有关如何使用Pry的更多详细信息。它非常方便!是的,这有帮助,但物体处于正确的状态。对象没有任何垃圾或类似的内容
class Bookmark
  include Mongoid::Document
  include Mongoid::Timestamps
  field :owner_req, type: String
  field :request_id, type: String
  field :corsponding_requests, type: Array

class << self
    def createBookmark ( title)
          bookmark = self.new(title);
          if bookmark.save
            bookmark
          end
    end


  end

end