我需要减少组中活动用户的数量,实际上,当新用户从组中的不活动状态变为活动状态时,实际上是在正确增加。但是,当从活动状态更改为非活动状态然后又重新变为活动状态时,活动用户的数量又增加了一个。
所以我需要在从活动状态变为非活动状态时减少计数器。
直到现在,我一直尝试使用delta_magnitude
参数来减小它,但是没有用。
class GroupUser < ApplicationRecord
attr_accessor :send_challenge
belongs_to :group
belongs_to :user
counter_culture :group, column_name: proc { |model| model.active? ? 'users_count' : nil },
column_names: {
['group_users.active = ?', true] => 'users_count'
}
如您所见,我使用dynamic-column-names
class GroupUser < ApplicationRecord
attr_accessor :send_challenge
belongs_to :group
belongs_to :user
counter_culture :group, column_name: proc { |model| model.active? ? 'users_count' : nil },
column_names: {
['group_users.active = ?', true] => 'users_count'
},
delta_magnitude: 1
在这里我添加了delta-magnitude,试图使其减小但没有用。
我有一种表达条件使其减少的方法吗?
答案 0 :(得分:0)
最后,我只是在同一查询中手动将其从有效更改为无效。如果有人知道正确的答案,则下次会有用。
答案 1 :(得分:0)
如果您使用包含回调的正常保存更新 active 属性,则当前 counter_culture 版本实际上会重新计算值更改的计数。 根据自述文件:
Updates counter cache when values change, not just when creating and destroying
在报告时,这可能是一个错误,但现在应该可以工作了。