Ruby parallel assignment
Yes, it is generally considered a bad practice because it is considered confusing. Though as you point out it is fairly unlikely to confuse because everything is being set to zeros and the alternative is five lines of repeated code.

However I find myself asking why you don't use an array. i.e.

freqs = [0, 0, 0, 0, 0]
or
freqs = Array.new(5, 0)

or else just define define the final hash:

def freq_progress
    user_flashcards = input_flashcards.includes(:term)
    terms_unicos = user_flashcards.map(&amp;:term).compact.uniq

    result = { f1: 0, f2: 0, f3: 0, f4: 0, f5: 0}
    terms_unicos.each do |term|
      case term.ranking
      when 1..100
        result[:f1] += 1
      when 101..300
        result[:f2]+= 1
      when 301..1000
        result[:f3] += 1
      when 1001..2000
        result[:f4] += 1
      when 2001..5000
        result[:f5] += 1
      end
    end

    result
  end