私はスターモデルモデルを持っており、ポストモデルへの列が含まれtotal_stars
ています:average_stars
create_table "posts", force: true do |t|
t.string "title"
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
t.integer "average_stars", default: 0, null: false
t.integer "total_stars", default: 0, null: false
end
def calculate_total_stars if [Post].include?(starable.class) self.starable.update_column(:total_stars, starable.total_stars + self.number) end end
def calculate_average_stars if [Post].include?(starable.class) self.starable.update_column(:average_stars, starable.total_stars / starable.stars.count) end end
したがって、問題はaverage_stars
、3.6
最終結果がただの場合3
です。5 つ星評価システムに適した計算または概算の種類がよくわかりません。しかし、次のようにしたいと思います: 1, 1.5, 2, 2.5...
average_stars
その結果を達成するために列を変更する方法の提案はありますか?