2012-08-10 79 views
0

我剛開始使用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}}) 

不應該有一個保存的邀請()方法?

回答

0

按照勇者無懼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實際上是你期待的,並沒有與用戶現有的關係。