学习 Rails 2 : Active Record

学习rails… 好吧, 距离上一篇文章已经隔了两个多月了, 其实已经把之前学的东西都忘的差不多了. 但是毕竟自己还是蛮喜欢这个web开发框架的, 因此继续学习下去;)

废话不多说, 最近学习的内容是Active Record(以下简称AR), 也就是MVC中的M. 简单说, 它就是Ruby中的一个类, 让外部使用者可以像操作对象一样操作数据库, 而无需写SQL; 专业点说就是一个Ruby中的ORM的实现. 有关它的详细介绍请参考Rails官网.

问题

有关AR的使用这里就不多说了, 比较简单, 网上相关的介绍也有很多. 这里主要介绍一下如何在现有的数据库基础上使用AR.

现在网上大多数rails教程(这里(强烈推荐这个由Andor Chen大大翻译的教程)都是从0开始搭建rails应用, 数据库都是从头开始创建的. 那如果我们已经有了现成的数据库, 该如何使用呢? 这个问题其实很简单, 但又不是那么简单;) 主要需要理解的问题就是Rails里的哲学: Convention over Configuration.

只要你的数据库遵循“约定”, 只需要这样:

1
2
3
class YourClassName < ActiveRecord::Base

end

恩, 是的, 只要这样就可以了, 只要你遵循“约定”;) 不需要事先定义任何东西, 即可享受AR带来的便利. 作为一个perlDBIx::Class的使用者, 我真心惊呆了呢.

很遗憾, 往往我们现成的数据库都没法很好的和Rails的”约定”相吻合. 我们可以参考官方给的建议. 另外本人在google的过程中找到了这样一个回答. 里面这句(it指代rails)

the less you argue with it, the happier you’ll be

很亮, 我也表示赞同. 例如当前数据库有一个表的字段命名为type, 但是这是AR的保留方法, 你用的话就会报错. 当然你可以绕过去, 请参考disqus工程师的这篇文章(需要翻墙). 当然, 可能还会有其他各种问题….

所以如果真心要使用rails的话, 就还是改一下数据库吧, 让它符合rails的约定. 毕竟这也不是什么坏事和复杂的事;)

后记

经过一段时间的学习, 真心可以体会到rails的强大与方便. 最重要的是可以体会到web编程的快乐, 而不是繁琐与重复;)

Comments