Class: StudentShort

Inherits:
StudentBase show all
Defined in:
lib/models/student_short.rb

Instance Attribute Summary collapse

Attributes inherited from StudentBase

#git, #id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from StudentBase

#has_contacts?, #has_git?, #short_contact, #valid?, valid_email?, valid_name?, valid_phone?, valid_profile_name?

Constructor Details

#initialize(id, info_str) ⇒ StudentShort

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

Raises:

  • (ArgumentError)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/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/models/student_short.rb', line 15

def contact
  @contact
end

#last_name_and_initialsObject

Returns the value of attribute last_name_and_initials.



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

def last_name_and_initials
  @last_name_and_initials
end

Class Method Details

.from_student(student) ⇒ Object

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

Raises:

  • (ArgumentError)


18
19
20
21
22
# File 'lib/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/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