Основная часть приложения, над которым я работаю, позволяет пользователю исследовать сложный набор данных, постепенно добавляя поисковые термины.Например, вы можете начать с поиска в свободном тексте, затем постепенно добавлять (или удалять) некоторые фасетные условия поиска, перемещать ползунок, чтобы ограничить некоторое измерение возвращаемых результатов и т. Д.
Концептуально, кажется,Мне, что пользователь постепенно определяет набор ограничений.Эти ограничения используются для поиска в наборе данных, а рендеринг результатов предоставляет возможности пользовательского интерфейса для добавления дополнительных уточнений поиска.Поэтому, создавая это в Rails, я думаю, что одной из моделей будет текущий набор ограничений поиска, а действия контроллера добавляют или удаляют условия ограничения из этой модели.
Предполагая, что это разумный подход (что является частью моего вопроса!), я не уверен, как подойти к этому в Rails, так как поиск является эфемерным, а не постоянным объектом.Я мог бы сохранить модель ограничений в хранилище сеансов, но это довольно сложный объект, который можно поместить в cookie.С другой стороны, я мог бы сохранить модель ограничений в базе данных, но тогда у меня возникнет проблема GC, поскольку база данных заполняется моделями ограничений из предыдущих сессий.
Итак: как лучше построитькомплексное состояние взаимодействия в Rails?