def parsed_sort_code
@parsed_sort_code ||= sort_code.to_s.scan(/../)
end
%w{first middle last}.each_with_index do |segment, index|
define_method "sort_code_#{segment}" do
parsed_sort_code[index]
end
define_method "sort_code_#{segment}=" do |value|
self.sort_code ||= " "
self.sort_code[index * 2, 2] = value
end
end
def sort_code=(new_value)
write_attribute :sort_code, new_value.gsub(/[^[:alnum:]\s]/, "")
end