Skip to content

Commit 0bf1bfc

Browse files
committed
Revert "WIP: change models to allow multiple teachers"
This reverts commit c89b30b.
1 parent c89b30b commit 0bf1bfc

13 files changed

+34
-146
lines changed

app/controllers/api/class_members_controller.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ def index
1313

1414
if result.success?
1515
@class_members = result[:class_members]
16-
puts "the class members are:"
17-
@class_members.each do |class_member|
18-
pp class_member
19-
end
2016
render :index, formats: [:json], status: :ok
2117
else
2218
render json: { error: result[:error] }, status: :unprocessable_entity

app/controllers/api/school_classes_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ def index
1212
end
1313

1414
def show
15-
@school_class_with_teachers = @school_class.with_teachers
15+
@school_class_with_teacher = @school_class.with_teacher
1616
render :show, formats: [:json], status: :ok
1717
end
1818

1919
def create
2020
result = SchoolClass::Create.call(school: @school, school_class_params:)
2121

2222
if result.success?
23-
@school_class_with_teachers = result[:school_class].with_teachers
23+
@school_class_with_teacher = result[:school_class].with_teacher
2424
render :show, formats: [:json], status: :created
2525
else
2626
render json: { error: result[:error] }, status: :unprocessable_entity
@@ -32,7 +32,7 @@ def update
3232
result = SchoolClass::Update.call(school_class:, school_class_params:)
3333

3434
if result.success?
35-
@school_class_with_teachers = result[:school_class].with_teachers
35+
@school_class_with_teacher = result[:school_class].with_teacher
3636
render :show, formats: [:json], status: :ok
3737
else
3838
render json: { error: result[:error] }, status: :unprocessable_entity

app/models/ability.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,7 @@ def define_school_teacher_abilities(user:, school:)
7474
can(%i[read], School, id: school.id)
7575
can(%i[read], :school_member)
7676
can(%i[create], SchoolClass, school: { id: school.id })
77-
# can(%i[read update destroy], SchoolClass) do |school_class|
78-
# school_class.school.id == school.id && school_class.teacher_ids.include?(user.id)
79-
# end
80-
# can read update or destroy the class if user is one of the teachers of the class
81-
# can(%i[read update destroy], SchoolClass, school: { id: school.id }, teacher_ids: )
82-
can(%i[read update destroy], SchoolClass, id: SchoolClass.with_class_teacher(user.id).select(:id), school: { id: school.id })
77+
can(%i[read update destroy], SchoolClass, school: { id: school.id }, teacher_id: user.id)
8378
can(%i[read create create_batch destroy], ClassMember,
8479
school_class: { school: { id: school.id }, teacher_id: user.id })
8580
can(%i[read], :school_owner)

app/models/class_student.rb renamed to app/models/class_member.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
class ClassStudent < ApplicationRecord
3+
class ClassMember < ApplicationRecord
44
belongs_to :school_class
55
delegate :school, to: :school_class
66
attr_accessor :student

app/models/class_teacher.rb

Lines changed: 0 additions & 31 deletions
This file was deleted.

app/models/school_class.rb

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,35 @@
22

33
class SchoolClass < ApplicationRecord
44
belongs_to :school
5-
has_many :students, class_name: :ClassStudent, inverse_of: :school_class, dependent: :destroy
6-
has_many :class_teachers, class_name: :ClassTeacher, inverse_of: :school_class, dependent: :destroy
5+
has_many :members, class_name: :ClassMember, inverse_of: :school_class, dependent: :destroy
76
has_many :lessons, dependent: :nullify
8-
accepts_nested_attributes_for :class_teachers
97

10-
scope :with_class_teacher, ->(user_id) { joins(:class_teachers).where(class_teachers: { id: user_id }) }
11-
12-
# validates :teacher_id, presence: true
8+
validates :teacher_id, presence: true
139
validates :name, presence: true
14-
# validate :teacher_has_the_school_teacher_role_for_the_school
10+
validate :teacher_has_the_school_teacher_role_for_the_school
1511

1612
def self.teachers
17-
User.from_userinfo(ids: ClassTeacher.pluck(:teacher_id))
13+
User.from_userinfo(ids: pluck(:teacher_id))
1814
end
1915

2016
def self.with_teachers
2117
by_id = teachers.index_by(&:id)
22-
all.map { |instance| [instance, instance.teacher_ids.map { |teacher_id| by_id[teacher_id] }] }
23-
end
24-
25-
def teacher_ids
26-
class_teachers.pluck(:teacher_id)
18+
all.map { |instance| [instance, by_id[instance.teacher_id]] }
2719
end
2820

29-
def with_teachers
30-
[self, User.from_userinfo(ids: teacher_ids)]
21+
def with_teacher
22+
[self, User.from_userinfo(ids: teacher_id).first]
3123
end
3224

33-
# private
25+
private
3426

35-
# def teacher_has_the_school_teacher_role_for_the_school
36-
# return unless teacher_id_changed? && errors.blank?
27+
def teacher_has_the_school_teacher_role_for_the_school
28+
return unless teacher_id_changed? && errors.blank?
3729

38-
# user = User.new(id: teacher_id)
39-
# return if user.school_teacher?(school)
30+
user = User.new(id: teacher_id)
31+
return if user.school_teacher?(school)
4032

41-
# msg = "'#{teacher_id}' does not have the 'school-teacher' role for organisation '#{school.id}'"
42-
# errors.add(:user, msg)
43-
# end
33+
msg = "'#{teacher_id}' does not have the 'school-teacher' role for organisation '#{school.id}'"
34+
errors.add(:user, msg)
35+
end
4436
end
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
# frozen_string_literal: true
22

3-
json.array!(@school_classes_with_teachers) do |school_class, teachers|
3+
json.array!(@school_classes_with_teachers) do |school_class, teacher|
44
json.call(
55
school_class,
66
:id,
77
:description,
88
:school_id,
9+
:teacher_id,
910
:name,
1011
:created_at,
1112
:updated_at
1213
)
1314

14-
json.teachers(teachers) do |teacher|
15-
json.call(
16-
teacher,
17-
:id,
18-
:name
19-
)
20-
end
15+
json.teacher_name(teacher&.name)
2116
end
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
# frozen_string_literal: true
22

3-
school_class, teachers = @school_class_with_teachers
3+
school_class, teacher = @school_class_with_teacher
44

55
json.call(
66
school_class,
77
:id,
88
:description,
99
:school_id,
10+
:teacher_id,
1011
:name,
1112
:created_at,
1213
:updated_at
1314
)
1415

15-
json.teachers(teachers) do |teacher|
16-
json.call(
17-
teacher,
18-
:id,
19-
:name
20-
)
21-
end
16+
json.teacher_name(teacher&.name)

db/migrate/20241101125219_create_class_teachers.rb

Lines changed: 0 additions & 12 deletions
This file was deleted.

db/migrate/20241101125505_move_teacher_data_to_class_teachers_table.rb

Lines changed: 0 additions & 11 deletions
This file was deleted.

db/migrate/20241101125814_remove_class_teacher_id.rb

Lines changed: 0 additions & 13 deletions
This file was deleted.

db/migrate/20241101142545_rename_class_members_to_class_students.rb

Lines changed: 0 additions & 9 deletions
This file was deleted.

db/schema.rb

Lines changed: 8 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)