По мере взросления моего Rails-приложения становится все более очевидным, что оно обладает сильным вкусом хранилища данных, и ему не хватает только таблицы фактов, чтобы все было ясно.
Кроме того, я только что прочитал главы 2 (Разработка красивых API) и 3 (Освоение динамического инструментария) Ruby Best Practices .
Теперь я пытаюсь выяснить, как лучше спроектировать часть, извлекающую факты ...
Скажем, у меня есть следующие размеры (существующие модели в приложении):
- Продукт (содержит средства)
- Фонд
- Мера (например, общее удержание, среднее удержание, среднее воздействие)
... и старый добрый универсальный Факт:
- Факт (дата, значение плюс столбец внешнего ключа NULLable для каждого из моих измерений)
Некоторые аспекты, по которым я был бы признателен за советы:
- Что может составлять гибкий интерфейс поиска?
- Что произойдет, если у меня есть факты с обоими значениями NULL (т.е. все или безразлично) и NOT NULL (конкретные) для измерения? Псевдо-значение типа
:all
? Или должно применяться какое-то соглашение?
- Как выбрать только подмножество значений измерений? Или исключить подмножество? : только и: исключить?
- Кто-нибудь имел опыт создания
named_scope
с этим? Существует очевидная привлекательность возможности связать по одному для каждого интересующего измерения, но становится ли слишком неуклюжим, если мы доберемся до 7 или 8 измерений?
(я знаю, что плагин acts_as_fact
считается существующим в той или иной форме (по крайней мере, на RailsConf 2006 был небольшой гудок), но я не смог найти ни кода, ни описания того, как он мог работать .)
Версии: Rails, ActiveRecord 2.1.2, Oracle Enhanced Adapter 1.2.0
РЕДАКТИРОВАТЬ: Я посмотрел на ActiveWarehouse и некоторые оговорки:
- в основном филиале не было коммитов с ноября-08 и нет активности вообще с января-09;
- учебник датируется 2006 годом, признан устаревшим, и 404 года для меня;
- кажется, что он хочет уйти от ActiveRecord - большая часть моего приложения останется в AR, и я думаю, что в настоящее время я хочу решение AR.
Так что я буду держаться подальше от этого, спасибо!