【问题标题】:Amistad Mongoid Save Does Not PersistAmistad Mongoid Save 不会持续存在
【发布时间】:2012-08-10 15:09:42
【问题描述】:

我刚刚开始使用 Amistad 和 Mongoid,我发现 current_user.invite(@user) 没有保存到 Mongo。我已经在控制台和 Rails 应用程序中完成了此操作,我确定该方法确实有效,因为该方法返回 true,但数据不会持续存在。有没有其他人有这个问题?我的 mongo 数据库确实有效。我用它保存了各种数据,但 Amistad 的朋友方法没有。

这是控制器动作:

def invite_friend
  @user = User.find params['id']
  res = current_user.invite(@user)
  current_user.last_name = 'hamilton123'
  current_user.save

  respond_to do |format|
    format.html 
    format.js{ render :js => "$('#friend_#{params['id']}').text('Pending')" }
  end
end

这是运行 .invite() 后的一些日志输出。我还做了一个 current_user.save() 只是为了确保我可以看到 Mongo 输出一个保存

MONGODB yansn_development['system.namespaces'].find({})
MONGODB yansn_development['users'].find({:_id=>BSON::ObjectId('4f8b100dbf0d820513000007')}).limit(-1).sort([[:_id, :asc]])
MONGODB yansn_development['users'].find({:_id=>BSON::ObjectId('4f8b0fd2bf0d82055b000001')}).limit(-1).sort([[:_id, :asc]])
MONGODB yansn_development['users'].update({"_id"=>BSON::ObjectId('4f8b100dbf0d820513000007')}, {"$set"=>{"last_name"=>"hamilton123", "updated_at"=>2012-04-15 19:06:21 UTC}})

难道不应该为invite()方法保存吗?

【问题讨论】:

    标签: mongodb mongoid


    【解决方案1】:

    根据 Amistad source 的说法,如果用户是 self 或者如果用户已经存在友谊,该方法将返回 false,方式如下:

    def invite(user)
      return false if user == self || find_any_friendship_with(user)
      Friendship.new(:user_id => self.id, :friend_id => user.id).save
    end
    

    我会检查您使用find 返回的用户是否真的是您所期望的用户,并且与该用户没有现有关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-08
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多