gpt4 book ai didi

ruby-on-rails - counter_cache 可以与 has_many 一起使用吗?

转载 作者:行者123 更新时间:2023-12-03 00:42:52 25 4
gpt4 key购买 nike

我正在努力向我的模型添加 counter_cache:

用户(id、org_id) 组织(id、users_count)

但出现以下错误:ArgumentError(未知 key :counter_cache):

class Org < ActiveRecord::Base
has_many :users, :counter_cache => true

class User < ActiveRecord::Base
belongs_to :org

任何想法设置错误。我希望 Org.users_count 返回该组织中用户数量的 counter_cache?

最佳答案

这样不行。您必须将 counter_cache 移至Belongs_to:

class User < ActiveRecord::Base
belongs_to :org, :counter_cache => true
end

并向 Org 模型添加一个 users_count 字段,然后 Rails 将为您更新该字段。不要忘记在迁移中添加 :default=> 0,否则无法正常工作。

如果您的应用程序中已有一些数据并且想要同步计数器,您可以(在迁移后)运行如下所示的操作:

  Org.find(:all).each do |o|
Org.update_counters o.id, :users_count => o.users.count
end

关于ruby-on-rails - counter_cache 可以与 has_many 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400687/

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