如何使复杂条件下的计数器缓存?

时间:2013-01-27 11:00:19

标签: ruby-on-rails ruby-on-rails-3 counter-cache

我将其迁移到启用计数器缓存

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

模型/ community.rb

....
def self.not_deleted
    where deleted_at: nil
end
....

我这样做的原因是,社区记录有可能被删除。因此,一旦相关社区删除,我就不想显示唯一代码。

当您看到我的迁移文件时,它只计算或减少当用户创建/删除唯一代码时user_id与特定用户的ID相关的唯一代码的整数。

如何添加上面写的条件,以排除删除community_id的唯一码(如果已删除,则删除了delete_at列将填入时间戳)

0 个答案:

没有答案