ruby 带条件的Rails计数器缓存

ltqd579y  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(101)

我有一个rails hotel应用程序,里面有房间。房间可以有n个与之关联的票。我已经创建了一个计数器缓存与计数器文化的宝石更新房间表与门票分配给它的数量,问题是我只想计数的门票是开放或在进行中的状态。我有这个代码,它正常工作,但不与条件工作,任何人都可以指导我,让我知道我如何与条件工作?任何帮助都很感激
房间表迁移文件

class AddTicketsCountToRooms < ActiveRecord::Migration[5.0]
    def self.up
      add_column :rooms, :tickets_count, :integer, null: false, default: 0
    end
  end

字符串
票证.rb文件

belongs_to :room
  counter_culture :room, column_name: proc {|model| model.status? [0,1] 'tickets_count' : nil }


这不符合where子句,给我错误的说法

syntax error, unexpected tSTRING_BEG, expecting '}' {|model| model.status? [0,1] 'tickets_count' : nil } ^ /Users/mohammedsayerwala/Documents/Aqua/app/models/ticket.rb:8: syntax error, unexpected ':', expecting keyword_end tatus? [0,1] 'tickets_count' : nil }

vyu0f0g1

vyu0f0g11#

Rails不提供counter_cache的条件。where子句和each也不起作用。
要实现条件计数器,您可以在代码中使用自定义回调来管理计数器blog on custom counter_cache with conditions
或者,您可以使用counter_culture gem、conditional-counter-cache
请参考类似问题的答案-Counter Cache for a column with conditions?

相关问题