我使用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_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
答案 0 :(得分:1)
您应该知道保存和创建是不同的,与销毁和删除相同。
保存和删除不会通过任何回调,因此它不会更新缓存计数器。如果要更新缓存计数器,则应使用create。