Ruby on rails Rails计数器缓存在生产环境中不工作

Ruby on rails Rails计数器缓存在生产环境中不工作,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,counter-cache,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Counter Cache,我在Rails 3.1.4(ruby 1.8.7)中遇到了计数器缓存机制的奇怪问题。当我在开发服务器上运行我的应用程序时,一切都很好。切换到生产环境注释后,每次仅添加一条注释时,计数列的增量为+2 我查看了日志,增量查询显示了两次: Started POST "/comments" for 127.0.0.1 at Mon May 21 16:39:49 +0200 2012 Processing by CommentsController#create as HTML Parame

我在Rails 3.1.4(ruby 1.8.7)中遇到了计数器缓存机制的奇怪问题。当我在开发服务器上运行我的应用程序时,一切都很好。切换到生产环境注释后,每次仅添加一条注释时,计数列的增量为+2

我查看了日志,增量查询显示了两次:

  Started POST "/comments" for 127.0.0.1 at Mon May 21 16:39:49 +0200 2012
  Processing by CommentsController#create as HTML
  Parameters: {"comment"=>{"content_id"=>"2803", "content_type"=>"Post", "value"=>"hello there"}, "authenticity_token"=>"/2HRoMq/I+fPzLlKB8CezWEpwjywHo5RwCgm2VRj0zo=", "utf8"=>"✓", "commit"=>"Dodaj"}
  [1m[36mUser Load (0.4ms)[0m  [1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1[0m
     1 row, 646 bajty
     app/controllers/application_controller.rb:27:in `current_user_session'
     app/controllers/application_controller.rb:32:in `current_user'
     app/controllers/application_controller.rb:41:in `require_user'
  [1m[35m (0.2ms)[0m  BEGIN
  [1m[36m (1.0ms)[0m  [1mUPDATE `users` SET `last_request_at` = '2012-05-21 14:39:50', `updated_at` = '2012-05-21 14:39:50', `perishable_token` = 'U6r38z0lX1G7Y48xC9s4' WHERE `users`.`id` = 1[0m
  [1m[35m (46.0ms)[0m  COMMIT
  [1m[36m (0.2ms)[0m  [1mBEGIN[0m
  [1m[35mBlacklist Load (0.7ms)[0m  SELECT `blacklists`.* FROM `blacklists` WHERE (user_id = 1 AND end_date > '2012-05-21 14:39:50')
     0 rows, 0 bajty
     app/models/comment.rb:97:in `block_check'
     app/controllers/comments_controller.rb:25:in `create'
  [1m[36mSQL (0.6ms)[0m  [1mINSERT INTO `comments` (`comments_count`, `content_id`, `content_type`, `created_at`, `edits`, `points`, `reported`, `updated_at`, `user_id`, `value`) VALUES (0, 2803, 'Post', '2012-05-21 14:39:50', 0, 0, NULL, '2012-05-21 14:39:50', 1, 'hello there')[0m
  [1m[35mPost Load (0.6ms)[0m  SELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 2803 LIMIT 1
     1 row, 658 bajty
     app/controllers/comments_controller.rb:25:in `create'
  [1m[36mSQL (0.6ms)[0m  [1mUPDATE `posts` SET `comments_count` = COALESCE(`comments_count`, 0) + 1 WHERE `posts`.`id` = 2803[0m
  [1m[35mSQL (0.4ms)[0m  UPDATE `posts` SET `comments_count` = COALESCE(`comments_count`, 0) + 1 WHERE `posts`.`id` = 2803
  [1m[36m (39.2ms)[0m  [1mCOMMIT[0m
  Redirected to http://0.0.0.0:3000/news/zobacz/Tibia-obt-startuje-w-listopadzie-2

我一整天都在努力解决这个问题,我不知道出了什么问题。在开发模式下,一切正常。从Rails2升级后出现问题。

问题已解决。正如我所说,我已经从Rails2迁移,在我的模型中有以下不推荐的语句:

belongs_to :content, :polymorphic => true, :counter_cache => true
Rails3自动处理计数器缓存字段,上述语句是多余的。我将模型关系更改为:

belongs_to :content, :polymorphic => true
工作得很有魅力

这有用吗?