我有一个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 }
型
1条答案
按热度按时间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?