1

これを移行してカウンターキャッシュを有効にしました

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 列にタイムスタンプが入力されます)

4

0 に答える 0