在没有ActiveRecord的情况下使用Ruby on Rails

我一直在考虑从我的Web项目使用PHP转换到Ruby on Rails,我最关心的一件事就是使用ActiveRecord for Rails。在我看来,非常强烈地鼓励使用ActiveRecord并且编写直接SQL似乎不赞成。看了几个项目后,我还没有看到一个实际使用SQL的项目。 我还没有在ActiveRecord上出售,主要是因为它需要学习一些看起来不像直接SQL那么强大的东西,例如:是否有一种简单的方法可以使用ActiveRecord的group by和having子句进行嵌套查询,还是我必须通过箍来实现这一目的? 有没有人在没有ActiveRecord的情况下使用过Rails?如果是这样,你的经历是什么?     
已邀请:
如果你不想使用ActiveRecord,你可以根据需要在模型中定义纯sql。 find_by_sql('选择什么')     
三个字:这里是龙。 通过走出“Rails Way”的道路,你会遇到难以想象的力量和狡猾的敌人。首先,你会想到“我和我这样做,我不是很棒吗?”。那你就累了。甚至筋疲力尽。很遗憾,在你的挣扎期间,你会看到所有使用Active Record的酷宝石,并想知道为什么你选择冒险走下一条充满厄运和阴郁的道路,这会让查克诺里斯穿上裤子。 请不要偏离Active Record。它只是在这里帮助你,而不是阻碍你。如果你想编写自己的查询,那么有一个
find_by_sql
方法,或者更低的
Model.connection.execute
方法。但是,这些只应在非常严峻的需求时使用,就像核武器一样。 如果您根本不想使用Active Record,那么我建议您查看DataMapper或Mongoid。 DataMapper提供了许多与Active Record相同的功能,并且已知一些人更喜欢语法。作为一点琐事:它是与Rails 3兼容的第一批宝石之一。 另一方面,Mongoid用于MongoDB数据库,其他一些人也很喜欢。 我再次乞求:不要偏离人迹罕至的路径,以免你想要自己挨打。     
您可以使用DataMapper。在编写Rails应用程序和工具超过一年后,我会强烈推荐使用ActiveRecord。即使您只使用Model.find_by_sql(“使用可能随时间变化的字段而出错的手写sql”)而不是Model.find_by_last_name(“Smith”) 许多聪明人花了很多时间研究ActiveRecord和ARL。我求你利用他们的工作。     
其他人必须有充分的理由在他们的Rails应用程序中使用ORM。 :) 特别是对于Rails 3,ORM是可插拔的 - 您可以轻松使用DataMapper或Sequel代替ActiveRecord。 无论如何,模型是任何MVC框架的重要(并且非常强大)的一部分。很多业务逻辑都放在模型中 - “胖模型”是一种推荐的开发方式。 关于现有ORM的另一个好处是,它们实际上允许(但不鼓励)您手动编写SQL - 如果您愿意,您可以自由地手动编写所有查询。但即便如此,我还是建议您将查询保持参数化并让库插入您的参数(您也可以在PHP中执行此操作,不是吗?)     

要回复问题请先登录注册