0

我正在使用 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

这在控制台中有效,但在控制器中它不会改变追随者人数,只会改变朋友人数。是什么赋予了?我什至能想到的唯一一件事是我传递用户的方式是问题所在,但我不确定如何解决它。

4

2 回答 2

2

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

于 2010-06-15T12:51:28.253 回答
0

看起来你没有保存user,所以试试吧increment!user如果记录可以保存,此方法将保存并返回 true。

编辑

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

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

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

于 2010-06-15T00:18:13.923 回答