Mongomapper、Rails、Incrementはコンソールで動作しますが、コントローラーではありません
-
27-09-2019 - |
質問
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
これはコンソールで機能しますが、コントローラーではフォロワーカウントを変更しません。友人だけがカウントされます。何が与えるのですか?私が考えることさえできる唯一のことは、私がユーザーを渡す方法が問題であるということですが、それを修正する方法はわかりません。
解決
問題は、インクリメントが発生した可能性が最も高いことですが、データベースからのデータでモデルをリロードしていません。インクリメントはDBクエリを発射しますが、インスタンスを更新しません。コントローラーのADD_USER呼び出しの後、 @Friendship.reloadとuser.reloadを試してください。
他のヒント
あなたが救っていないようです user
, 、だから試してみてください increment!
代わりは。この方法は、を保存します user
レコードを保存できる場合はtrueを返します。
編集
私はそれを行う別の方法を見つけました(うまくいけば正しいもの):
User.increment(user.id, :followers_count => 1)
このコードをテストしていません!しかし、私はそれがうまくいくことを願っています。
所属していません StackOverflow