Чтобы хранить подобные модели лучше использовать NoSQL решения, типа таких как
MongoDB или
CoachDB, при правильном использовании —
Redis тоже хороший вариант.
В случае с
PostgreSQL можно так же использовать относительно новую фичу
hstore.
Во первых нужно будет перевести метод миграций на
sql
, так как
hstore является колонкой специфичного формата.
Сделать это можно в конфиг-файле
application.rb
Вашего приложения:
config.active_record.schema_format = :sql
После чего добавьте gem
activerecord-postgres-hstore в
Gemfile
Вашего приложения, и сгенерите
hstore:setup
:
$ rails g hstore:setup
Эта миграция включит расширение
hstore
для вашей базы данных.
И вуаля!
hstore
теперь можно юзать в генерации миграций Ваших таблиц:
$ rails g migration add_properties_to_table properties:hstore
Кроме того что колонки типа
hstore
работают так же как сериализуемые строки, их можно использовать при выборке (select) и даже сделать индексируемыми для более быстрого поиска. Вобщем за подробностями обращайтесь к документации (ссылки приведены выше).