我有一个Star 模型模型,并包含Posttotal_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
. 我不太确定哪种计算或近似值适合五星级评级系统。但我希望它采用以下方式:1、1.5、2、2.5...
关于如何修改average_stars
列以实现该结果的任何建议?