Skip to content

Commit e23b063

Browse files
committed
Added average to course
1 parent bc33774 commit e23b063

File tree

5 files changed

+26
-1
lines changed

5 files changed

+26
-1
lines changed

app/models/course.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,12 @@ def self.levels
5050
def bought(user)
5151
self.enrollments.where(user_id: [ user.id ], course_id: [ self.id ]).empty?
5252
end
53+
54+
def update_rating
55+
if enrollments.any? && enrollments.where.not(rating: nil).any?
56+
update_column :average_rating, (enrollments.average(:rating).round(2).to_f)
57+
else
58+
update_column :average_rating, (0)
59+
end
60+
end
5361
end

app/models/enrollment.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ def to_s
3030
user.to_s + " " + course.to_s
3131
end
3232

33+
after_save do
34+
course.update_rating unless rating.nil? || rating.zero?
35+
end
36+
37+
after_destroy do
38+
course.update_rating
39+
end
40+
3341
protected
3442
def cant_subscribe_to_own_course
3543
if self.new_record?

app/views/courses/_course.html.haml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
= enrollment_button(course)
1010
.row
1111
= review_button(course)
12+
.card-footer
13+
.text-warning.fa.fa-star
14+
= course.average_rating
1215
.card-footer
1316
.fa.fa-list-check
1417
= course.lessons.count
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddAverageRatingToCourses < ActiveRecord::Migration[7.2]
2+
def change
3+
add_column :courses, :average_rating, :float, default: 0.0, null: false
4+
end
5+
end

db/schema.rb

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)