Sha256: 5ba28e9d0d82c274ab8b3bd824b178627edee4bf9cff168e58d438fa4e16c978
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
class Tenant PHONE_REGEX = /^\+?[78] ?[(-]?\d{3} ?[)-]?[ -]?\d{3}[ -]?\d{2}[ -]?\d{2}$/ attr_reader :tenant_id, :first_name, :last_name, :phone def initialize(tenant_id, first_name, last_name, phone = nil) validate_null('tenant_id', tenant_id) validate_null('first_name', first_name) validate_null('last_name', last_name) validate_name_length(first_name, last_name) validate_phone(phone) @tenant_id = tenant_id @first_name = first_name @last_name = last_name @phone = phone end private def validate_null(name, value) if value.nil? raise ArgumentError, "Argument '#{name}' cannot be null" end end def validate_name_length(first_name, last_name) [first_name, last_name].each do |name| if name && name.length > 50 raise ArgumentError, "Name exceeds 50 characters limit: #{name}" end end end def validate_phone(phone) if phone && !phone.match?(PHONE_REGEX) raise ArgumentError, "Invalid phone format: #{phone}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shnaider_carproj-0.1.0 | lib/models/tenant.rb |