0

我刚刚开始使用 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}})

邀请()方法不应该保存吗?

4

1 回答 1

0

根据 Amistad 的来源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实际上是您期望的用户,并且与用户没有现有关系。

于 2012-08-13T02:16:58.130 回答