轨道上的红宝石 - 为什么counter_cache不起作用



我使用counter_cache来计算用户的帖子数量,但它不起作用。

#Post Model    
class Post < ActiveRecord::Base
    belongs_to :user, :counter_cache => true
end
#User Model
class User < ActiveRecord::Base
  has_many :posts
end

在我的用户表中有一个Posts表和一个Posts_count

当我创建一个新帖子时,posts_count无法计数,只能停止0。这是一个非常奇怪的问题。我错过了什么?

--------------------更多详细信息------------------

我跟踪创建操作:

User Load (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
SQL (0.0ms)  BEGIN
SQL (7.0ms) describe `posts`AREL (0.0ms)INSERT INTO `posts` (`user_id`, `title`, `content`, `created_at`, `updated_at`) VALUES (NULL, 'test', 'test','2011-06-01 07:29:10', '2011-06-01 07:29:10')
SQL (54.0ms) COMMIT
SQL (0.0ms) BEGIN
AREL (1.0ms)UPDATE `posts` SET `user_id` = 1, `updated_at` = '2011-06-01 07:29:10' WHERE `posts`.`id` = 16[0m
SQL (38.0ms) COMMIT
Redirected to http://localhost:3000/user/post
Completed 302 Found in 250ms

---------------------现在可以------------------

在我的创作后行动:

#I change the following code 
#@post = Post.create(params[:post])
#@user.posts << @post
@post = @user.posts.build(params[:post])
@post.save

您应该知道,save和create与destroy和delete是不同的。

保存和删除不会进行任何回调,因此不会更新缓存计数器。如果要更新缓存计数器,则应使用create。

相关内容

  • 没有找到相关文章

最新更新