Одно понятие, которое мы используем здесь, который оказался довольно хорошим, является таблицей "Lookup Code". Если у Вас есть база данных, которая имеет много ссылок на объекты, которое эффективно кодирует, или типы, и т.п., сохраняют всех их в единственной таблице LookupCode, которая основывает вещи прочь CodeGroup и самого Кода.
Мы сохраняем дополнительный флаг для активного состояния кода, а также несколько дополнительных числовых столбцов, которые могут использоваться, если данный код поиска должен быть отсортирован или вычислен в каком-либо виде вида.
Путем выполнения этого, Вы устраняете тонны наличия крошечных небольших таблиц, рассеянных вокруг Вашей схемы. Теперь одна из оборотных сторон к этому - то, что первичный ключ для таблицы является группой кода, и кодируйте себя, таким образом, нет внешнего ключа, присоединенного к "основной" таблице, которая ссылается на данный код, но определенное осуществление в приложении должно легко разместить для этого.
require 'rexml/document'
doc = REXML::Document.new
root = doc.add_element "Alpha"
root.add_text "now is & the < time > ' for \" me"
doc.write
Производит:
<Alpha>now is & the < time > ' for " me</Alpha>
Модуль CGI имеет метод escapeHTML.
CGI.escapeHTML("&<>")
#=> "&<>"
На Ruby есть библиотека под названием REXML для работы с xml. Это может быть полезно для того, что вам нужно. Вот ссылка на учебник. http://www.germane-software.com/software/rexml/docs/tutorial.html