2009-10-04 54 views
1

我发现ActiveRecord的使用会影响我设计数据库模式的方式(尽管我希望它不会)。我正在考虑提取数据的低效性以及如何减少查询的总数。 find:include选项目前只能让你获得。我来自编写存储过程,可以在一次调用中获取所需的所有内容(针对特定屏幕或活动)。接受SQL并简单映射对象和关系的ORM?

我真的不需要编写我的SQL的API。我完全满意以非Ruby方式编写T-SQL。我唯一想要的是将我的查询结果映射到实例化的模型及其关联。有没有采用这种方法的ORM?可以处理多个选择的人(存储的特效?),甚至使用临时表...

编辑:

我转述并澄清什么,我真的这个question后。

+0

日子她念叨着,我真的很想念SQL – 2009-10-04 21:36:47

回答

1

我发现对一个相当复杂的查询的需求大约是项目的20%,所以使用ORM相当有帮助。

当这20%出现时,我发现自己正在做的事情与你所要求的一样,只是用SQL进行工作。 ActiveRecord和DataMapper有一个find_by_sql方法可以帮助你更多,但是并没有实例化所有模型(至少在ActiveRecord上,如果我没弄错的话,那就是)。

您是否尝试过使用Sequel?这也是一个ORM,但让我们更容易,更灵活地处理您的问题。

除此之外,我不能想到ORMs领域更集中的解决方案。请记住,ORM试图抽象查询接口来简化。如果您对使用原始SQL感到舒适,也许只需一个SQL Facade界面就可以提高工作效率。

+0

我看了看续集。我不确定的是如何在ActiveRecord或Sequel中手动映射关联。也就是说,如果我只是试图将Child(parent.children << child)插入到模型的关联中,ActiveRecord可能会将此混淆为一种新的关系,而不是将其作为现有的关系接受。 – Mario 2009-10-05 12:04:16