• Как лучше сохранить Hash расположения объектов в БД?

    mercurial
    @mercurial
    Чтобы хранить подобные модели лучше использовать 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) и даже сделать индексируемыми для более быстрого поиска. Вобщем за подробностями обращайтесь к документации (ссылки приведены выше).
    Ответ написан
    Комментировать