Ruby on rails 使用计数器区域性在同一查询中更改多个计数器
我有以下类,其中有几个计数器用于同一关联:Ruby on rails 使用计数器区域性在同一查询中更改多个计数器,ruby-on-rails,activerecord,counter-cache,Ruby On Rails,Activerecord,Counter Cache,我有以下类,其中有几个计数器用于同一关联: class Book < ::ActiveRecord::Base belongs_to :user counter_culture :user counter_culture :user, column_name: Proc.new { |b| b.comedy? ? 'comedy_books_count' : nil } counter_culture :user, column_name: Proc.new { |b|
class Book < ::ActiveRecord::Base
belongs_to :user
counter_culture :user
counter_culture :user, column_name: Proc.new { |b| b.comedy? ? 'comedy_books_count' : nil }
counter_culture :user, column_name: Proc.new { |b| b.hard_cover? ? 'hard_cover_books_count' : nil }
end
是否有一种方法可以通过在单个查询中执行更新来更有效地使用计数器文化?每一行都被检测为特殊情况,他们很难知道哪一行可以优化,哪一行不能优化。所以我猜不会。每一行都被检测为特殊情况,他们很难知道哪一行可以优化,哪一行不能优化。所以我想没有
UPDATE "users" SET "books_count" = COALESCE("books_count", 0) + 1 WHERE "users"."id" = $1 [["id", 1616]]
UPDATE "users" SET "comedy_books_count" = COALESCE("comedy_books_count", 0) + 1 WHERE "users"."id" = $1 [["id", 1616]]
UPDATE "users" SET "hard_cover_books_count" = COALESCE("hard_cover_books_count", 0) + 1 WHERE "users"."id" = $1 [["id", 1616]]