26 lines
470 B
Ruby
26 lines
470 B
Ruby
module Tables
|
|
class Table < Array
|
|
attr_writer :discomfort
|
|
attr_reader :id
|
|
|
|
def initialize(*args)
|
|
super
|
|
@id = SecureRandom.uuid
|
|
end
|
|
|
|
def discomfort
|
|
@discomfort ||= DiscomfortCalculator.new(self).calculate
|
|
end
|
|
|
|
def swap_candidates
|
|
@swap_candidates ||= uniq { |person| person.affinity_group_list.first }
|
|
end
|
|
|
|
def dup
|
|
super.tap do |new_table|
|
|
new_table.discomfort = nil
|
|
end
|
|
end
|
|
end
|
|
end
|