Amistad Mongoid保存不会持续

问题描述:

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

这里的控制器动作:

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()只是为了确保我能看到蒙戈输出保存

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}}) 

不应该有一个保存的邀请()方法?

按照勇者无惧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实际上是你期待的,并没有与用户现有的关系。