Cómo calcular específica de hash recuento calificación en Ruby on Rails?

twinkle:

Por lo tanto, tengo una after_save gancho en opinión modelo que las llamadas calculate_specific_rating función del modelo del producto. La función es la siguiente:

def calculate_specific_rating
    ratings = reviews.reload.all.pluck(:rating)
    specific_rating = Hash.new(0)
    ratings.each { |rating| specific_rating[rating] += 1 }
    self.specific_rating = specific_rating
    save
  end

En este momento, devuelve

specific_rating => { 
"2"=> 3, "4"=> 1
}

Quiero que vuelva como:

specific_rating => { 
"1"=> 0, "2"=>3, "3"=>0, "4"=>1, "5"=>0
}

Además, está bien para inicializar un nuevo cada vez hash de una revisión se guarda? Quiero alguna alternativa. Gracias

Sebastian Palma :

Se puede crear un rango de 1 hasta el valor máximo en ratingsmás 1 y comenzar la iteración a través de ella, produciendo una matriz en donde el primer elemento es el actual, y el segundo elemento es el total de veces que el elemento actual está presente en ratings. Después de todo, el resultado se convierte en un hash:

self.specific_rating = (1..ratings.max + 1).to_h { |e| [e.to_s, ratings.count(e)] }
save

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=369402&siteId=1
Recomendado
Clasificación