Вы можете создать виртуальные атрибуты в вашей модели для представления этих структур.
Существует railscast по этому вопросу, но в итоге вы можете сделать что-то подобное в вашей модели
def full_name
[first_name, last_name].join(' ')
end
def full_name=(name)
split = name.split(' ', 2)
self.first_name = split.first
self.last_name = split.last
end
Если вы хотите явно изменить значение атрибута при чтении или записи, вы можете использовать методы read_attribute или write_attribute. (Хотя я считаю, что они могут быть устаревшими).
Они работают, заменяя метод доступа атрибута своим собственным. Например, поле идентификатора ветви может быть введено как xxxxxx или xx-xx-xx. Таким образом, вы можете изменить ваш метод branch_identifier =, чтобы удалить дефисы, когда данные хранятся в базе данных. Это может быть достигнуто как так
def branch_identifier=(value)
write_attribute(:branch_identifier, value.gsub(/-/, '')) unless value.blank?
end