これを移行してカウンターキャッシュを有効にしました
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
models/community.rb
....
def self.not_deleted
where deleted_at: nil
end
....
コミュニティレコードが削除される可能性があるためです。関連するコミュニティが削除されたら、一意のコードを表示したくありません。
user_id
移行ファイルを見ると、ユーザーが一意のコードを作成/削除するときに、特定のユーザーの ID に関連する 一意のコードの総数がカウントアップまたはカウントダウンされるだけです。
削除された一意のコードを除外するために、上で書いた条件を追加するにはどうすればよいですかcommunity_id
(削除すると、deleted_at 列にタイムスタンプが入力されます)