我迁移了这个以启用计数器缓存
class AddUniquecodesCountToUser < ActiveRecord::Migration
def up
add_column :users, :uniquecodes_count, :integer, :default => 0
User.reset_column_information
User.all.each do |p|
User.reset_counters(p.id, :uniquecodes)
end
end
def down
remove_column :users, :uniquecodes_count
end
end
我通常通过此代码获取用户拥有的唯一代码数量
current_user.uniquecodes.joins(:community).merge(Community.not_deleted).order("uniquecodes.updated_at DESC").count.to_s
模型/社区.rb
....
def self.not_deleted
where deleted_at: nil
end
....
我这样做的原因是,社区记录可能会被删除。因此,一旦相关社区被删除,我就不想显示唯一代码。
正如您看到的我的迁移文件,它只是在用户创建/删除唯一代码时向上或向下计数user_id
与特定用户的 id 相关的唯一代码的总数。
如何添加我上面写的条件以排除community_id
被删除的唯一代码(如果删除,deleted_at 列将填充时间戳)