Ответ Noodl правильный, но не совсем правильный.
Это действительно зависит от используемого вами адаптера базы данных / ORM: например, PostgreSQL теперь может хранить и искать хэши / json - проверьте hstore.Я помню, что читал, что адаптер ActiveRecord для PostgreSQl теперь обрабатывает его правильно.И если вы используете mongoid или что-то в этом роде - тогда вы используете неструктурированные данные (например, json) на уровне базы данных повсюду.
Однако, если вы используете базу данных, которая не может действительно обрабатывать хэши - как MySQLКомбинация / ActiveRecord - тогда единственная причина, по которой вы бы использовали сериализованное поле, - это некоторые данные, которые вы можете создавать / записывать в некотором фоновом процессе и отображать / выводить по требованию - только два использования, которые я обнаружил в своем опыте, - это некоторые отчеты (напримерПоле статистики в модели продукта - где мне нужно хранить некоторые средние и средние значения для продукта) и пользовательские параметры (например, предпочитаемый ими цвет шаблона - мне действительно не нужно запрашивать это) - однако пользовательская информация - например, их подпискадля списка рассылки - должен быть доступен поиск по электронной почте.
PostgreSQL hstore
ActiveRecord Пример:
MyModel.where("mycode @> 'KEY=>\"#{VALUE}\"'")
ОБНОВЛЕНИЕ Начиная с 2017 года MariaDB и MySQL поддерживают типы полей JSON.