gpt4 book ai didi

ruby-on-rails - counter_cache 实现的问题

转载 作者:行者123 更新时间:2023-12-03 14:51:43 26 4
gpt4 key购买 nike

我正在' rake 中止! ...posts_count 被标记为只读错误。

我有两个模型:用户和帖子。

users has_many posts.

posts belongs_to :user, :counter_cache => true

我有一个迁移,它将 posts_count 列添加到用户表中,然后计算并记录每个用户的当前帖子数。
self.up
add_column :users, :posts_count, :integer, :default => 0

User.reset_column_information
User.all.each do |u|
u.update_attribute( :posts_count, u.posts.count)
end
end

当我运行迁移时,出现错误。当然,这是非常明确的,如果我从帖子模型中删除 :counter_cache 声明,例如
belongs_to :user

迁移运行良好。这显然没有意义,因为您无法以这种方式真正实现它。我错过了什么?

最佳答案

您应该使用 User.reset_counters这样做。此外,我建议使用 find_each而不是 each因为它将批量迭代集合而不是一次迭代所有集合。

self.up
add_column :users, :posts_count, :integer, :default => 0

User.reset_column_information
User.find_each do |u|
User.reset_counters u.id, :posts
end
end

关于ruby-on-rails - counter_cache 实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com