我使用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。