Я использую Ruby on Rails v3.2.2 и хотел бы «защитить» атрибут класса/экземпляра, чтобы значение столбца таблицы базы данных можно было обновить только одним способом. То есть, например, если у меня есть две таблицы базы данных:
table1
- full_name_column
table2
- name_column
- surname_column
и я управляю table1
так, чтобы full_name_column
обновлялся с помощью обратного вызова, указанного в соответствующем классе/модели table2
, я хотел бы убедиться, что можно обновить значение full_name_column
только с помощью этого обратного вызова .
Другими словами, я должен убедиться, что значение table2.full_name_column
всегда
"#{table1.name_column} #{table1.surname_column}"
и что это не может быть другое значение. Так, например, если я попытаюсь "напрямую" обновить table1.full_name_column
, это должно вызвать что-то вроде ошибки. Конечно, это значение должно быть читаемым.
Возможно ли это? Что вы посоветуете, как справиться с этой ситуацией?
Причины такого подхода...
Я хочу использовать этот подход, потому что я планирую выполнять поиск в базе данных по столбцам table1
, где table1
содержит другие значения, связанные с объектом "профиль"/"человек"... в противном случае, возможно, мне придется сделать какой-то хак (может быть, сложный hack), чтобы направить эти поиски на table2
, чтобы искать "#{table1.name_column} #{table1.surname_column}"
строк.
Итак, я думаю, что простым способом является денормализация данных, как описано выше, но для этого требуется реализовать "необычный" способ обработки этих данных.
Кстати: ответ должен быть направлен на «решение» связанных процессов или поиск лучшего подхода к более эффективному управлению функциями поиска.