Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用计数器区域性在同一查询中更改多个计数器_Ruby On Rails_Activerecord_Counter Cache - Fatal编程技术网

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]]