MongoMapper,Rails,增量在控制台中工作但不在控制器中工作

时间:2010-06-15 00:00:45

标签: ruby-on-rails ruby mongodb mongomapper

我正在使用mongo_mapper 0.7.5和rails 2.3.8,我有一个在我的控制台中工作的实例方法,但不在我的实际应用程序的控制器中。我不知道为什么会这样。

#controller
if @friendship.save
   user1.add_friend(user2)
...

#model
...
key :friends_count, Integer, :default => 0
key :followers_count, Integer, :default => 0

def add_friend(user)
   ...
   self.increment(:friends_count => 1)
   user.increment(:followers_count => 1)
   true
end

这可以在控制台中运行,但在控制器中它不会改变跟随者数量,只有朋友才算数。是什么赋予了?我唯一能想到的就是我传递用户的方式是问题,但我不知道如何解决它。

2 个答案:

答案 0 :(得分:2)

问题很可能是增量已经发生,但您没有使用数据库中的数据重新加载模型。 Increment会触发db查询,但不会更新实例。在控制器中执行add_user调用后尝试@ friendship.reload和user.reload。

答案 1 :(得分:0)

您似乎没有保存user,因此请尝试使用increment!。如果可以保存记录,此方法将保存user并返回true。

修改

我找到了另一种方法(希望是正确的方法):

User.increment(user.id, :followers_count => 1)

我还没有测试过这段代码!但我希望它有效。