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 に答える