Class: StudentShort

Inherits:
AbstractStudent show all
Defined in:
lib/source/models/student_short.rb,
lib/source/models/student/student_short.rb

Instance Attribute Summary collapse

Attributes inherited from AbstractStudent

#git, #id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractStudent

#get_info

Constructor Details

#initialize(id:, fio:, git:, contact:) ⇒ StudentShort

Стандартный конструктор

Raises:

  • (ArgumentError)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/source/models/student_short.rb', line 25

def initialize(id, info_str)
  params = JSON.parse(info_str, { symbolize_names: true })
  raise ArgumentError, 'Fields required: last_name_and_initials' if !params.key?(:last_name_and_initials) || params[:last_name_and_initials].nil?

  self.id = id
  self.last_name_and_initials = params[:last_name_and_initials]
  self.contact = params[:contact]
  self.git = params[:git]

  options = {}
  options[:id] = id
  options[:git] = git
  options[contact[:type].to_sym] = contact[:value] if contact
  super(**options)
end

Instance Attribute Details

#contactObject

Returns the value of attribute contact.



15
16
17
# File 'lib/source/models/student_short.rb', line 15

def contact
  @contact
end

#fioObject (readonly)

Returns the value of attribute fio.



7
8
9
# File 'lib/source/models/student/student_short.rb', line 7

def fio
  @fio
end

#last_name_and_initialsObject

Returns the value of attribute last_name_and_initials.



15
16
17
# File 'lib/source/models/student_short.rb', line 15

def last_name_and_initials
  @last_name_and_initials
end

Class Method Details

.from_json(json) ⇒ Object

Raises:

  • (ArgumentError)


26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/source/models/student/student_short.rb', line 26

def self.from_json(json)
  result = JSON.parse(json)
  raise ArgumentError, 'Missing field: fio' unless result.key?('fio')

  fio = result.delete('fio')
  StudentShort.new(
    id: result['id'],
    fio: fio,
    git: result['git'],
    contact: result['contact']
  )
end

.from_student(student) ⇒ Object

Конструктор из Student

Raises:

  • (ArgumentError)


18
19
20
21
22
# File 'lib/source/models/student_short.rb', line 18

def self.from_student(student)
  raise ArgumentError, 'Student ID is required' if student.id.nil?

  StudentShort.new(student.id, student.short_info)
end

Instance Method Details

#to_sObject

Методы приведения объекта к строке



42
43
44
45
46
47
48
49
# File 'lib/source/models/student_short.rb', line 42

def to_s
  result = last_name_and_initials
  %i[id contact git].each do |attr|
    attr_val = send(attr)
    result += ", #{attr}=#{attr_val}" unless attr_val.nil?
  end
  result
end