我正在使用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
这可以在控制台中运行,但在控制器中它不会改变跟随者数量,只有朋友才算数。是什么赋予了?我唯一能想到的就是我传递用户的方式是问题,但我不知道如何解决它。
答案 0 :(得分:2)
问题很可能是增量已经发生,但您没有使用数据库中的数据重新加载模型。 Increment会触发db查询,但不会更新实例。在控制器中执行add_user调用后尝试@ friendship.reload和user.reload。
答案 1 :(得分:0)
您似乎没有保存user
,因此请尝试使用increment!
。如果可以保存记录,此方法将保存user
并返回true。
修改强>
我找到了另一种方法(希望是正确的方法):
User.increment(user.id, :followers_count => 1)
我还没有测试过这段代码!但我希望它有效。