socialization というgem をつかって、ユーザー同士のフォローを行おうとしています。
ユーザーがフォローするごとに、followee_count が増えて行くはずなのですが、増えません。
調べて行くと、socialization/lib/socialization/stores/active_record/mixins/base.rb:7 の
update_counters がうまくいっていないようなのです。
rails console --sandbox で試しに、update_counters をやってみました。
shell
1irb(main):063:0> User.update_counters(user.id, followees_count: +12, sign_in_count: +2) 2 SQL (0.3ms) UPDATE `users` SET `followees_count` = COALESCE(`followees_count`, 0) + 12, `sign_in_count` = COALESCE(`sign_in_count`, 0) + 2 WHERE `users`.`id` = 2 3=> 0 4irb(main):064:0> user 5=> #<User id: 2, provider: "email", uid: "test2@test.com", encrypted_password: "$2a$10$rrOigWmBP74wJnOg.aW1zeKD7Qbm059ujTWhZpo23VX...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, name: "hehe", nickname: nil, image: nil, email: "test2@test.com", tokens: {}, created_at: "2015-08-15 06:07:28", updated_at: "2015-08-15 06:07:28", followees_count: 0, followers_count: 0> 6irb(main):065:0> User.update_counters(user.id, followees_count: +12, sign_in_count: +2) 7 SQL (0.2ms) UPDATE `users` SET `followees_count` = COALESCE(`followees_count`, 0) + 12, `sign_in_count` = COALESCE(`sign_in_count`, 0) + 2 WHERE `users`.`id` = 2 8=> 0 9irb(main):066:0> user 10=> #<User id: 2, provider: "email", uid: "test2@test.com", encrypted_password: "$2a$10$rrOigWmBP74wJnOg.aW1zeKD7Qbm059ujTWhZpo23VX...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, name: "hehe", nickname: nil, image: nil, email: "test2@test.com", tokens: {}, created_at: "2015-08-15 06:07:28", updated_at: "2015-08-15 06:07:28", followees_count: 0, followers_count: 0> 11 12
このように、update_countersがうまくいきません。
どうやら、SQL 文 の
sql
1COALESCE(`followees_count`, 0) + 12
が計算されていないようです。
どうすればいいでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。