随着我的Rails应用程序的成熟,越来越明显的是它具有强大的数据仓库功能,仅缺少一个事实表就可以使所有内容变得清晰。
最重要的是,我仅阅读了Ruby Best Practices的第2章(设计漂亮的API)和第3章(掌握动态工具包)。
现在,我试图找出如何最好地设计事实检索部分...
假设我有以下尺寸(应用中现有的型号):
...以及一个良好的旧通用事实:
我很高兴能从中获得一些建议:
:all
这样的伪值?还是应该适用某些约定? named_scope
来处理此问题?能够针对每个感兴趣的维度链接一个链显然具有吸引力,但是如果我们达到7或8个维度,它会变得笨拙吗? (我知道
acts_as_fact
插件据说以某种形式存在(至少在RailsConf 2006上有一些嗡嗡声),但我找不到任何代码或描述它可能如何工作的信息。)版本:Rails,ActiveRecord 2.1.2,Oracle增强适配器1.2.0
编辑:我看了ActiveWarehouse,并有一些保留:
-自从08年11月以来,主分支一直没有提交过,并且自09年1月以来根本没有任何事件;
-该教程的日期为2006年,已经过时,并且在我身上显示404;
-似乎想摆脱ActiveRecord-我的大部分应用程序都将保留在AR中,而我认为目前我需要一个AR解决方案。
因此,我将避免使用该命令,谢谢!
最佳答案
NULL可能会引起误导,因为它表示没有关联。我会使用-1
之类的值(如果它是仅值> 0的整数foreign_key)。
with_scope()
您也可以覆盖查找功能
def self.find(*args)
if anything
with_scope(a_scope) do
result = super *args
end
else
result = super *args
end
end
def self.a_scope
{:find => { :conditions => ["person_id = ?", me] , :readonly => true}}
end
我们有一个带有4维的olap数据库,它工作得很好。我认为,如果您为active_record实现一些自定义方法,那么您的应用程序将很有趣。
我也发现了这个:http://github.com/aeden/activewarehouse/tree/master
关于ruby-on-rails - 使用ActiveRecord与数据仓库风格的表进行对话吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1221858/