快速业务通道

Ruby on Rails的活动记录纵览 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on Rails的活动记录纵览

时间:2011-11-09 天极 李宁

用Ruby on Rails来编写数据库管理系统是非常快速的。Ruby on Rails之所以有如此高的生产率,不 光是Ruby的语法灵活,而这一切在很大程序上是拜活动记录(Active Record)所赐。那么什么是活动记 录呢?如果用一句话来解释,那就是一个可以将数据映射成对象的框架(这有些类似于Hibernate)。也 许你会说:"这有什么,现在这种框架多得是,Hibernate不是也非常强大吗?",但如果你用了Ruby on Rails(以下简称为RoR),你就会发现它和其它的同类框架是多么的不同,它比其它框架更容易使用,编程 效率也更高,据官方说,使用RoR比使用Java和Hibernate的生产率高10倍(也许并没有这么夸张,但活动 记录的数据映射的确比其它框架的数据映射的生产率高一些)。

无论是桌面程序还是基于Web的程序,数据处理始终是它们的核心。数据可以使用不同的技术进行描述 和处理。

这些数据处理技术之一就是对象关系映射技术,或者简称为ORM技术。ORM技术将数据库中的数据表或 视图映射成了面象对象的类。而ORM框架的作用就是架起数据和对象之间的桥梁,以及为桥梁两端的数据 和对象提供相应的服务。由于ORM框架自成一体,因此,开发人员的主要工作就是将ORM框架和其它的框架 (如web框架)连接起来,从而使它们可以协同工作。

在ORM框架家族中,RoR很特别。RoR的核心是ORM框架,而这个框架在RoR中是以活动记录的形式表现的 。在本文中,我们将关注活动记录的一些基本概念和她最诱人的地方:快速连接和操作数据库。本文的第 一部分将讨论活动记录的基础知识。第二部分将一步步地指导读者如何使用活动记录快速地连接和操作数 据库。在第三部分中我们以一个完整的例子来讨论如何将活动记录和ActionController以及ActionView一 起使用。以上是本文所讨论的主要内容。

什么是活动记录

活动记录是一个ORM框架,也可以看做是和RoR一起发布的一个数据库映射层。活动记录是RoR的核心。 活动记录是一个ORM层,它提供了以下的映射服务:

1. 将表映射成类

2. 将字段映射成类的属性

3. 将表中的主键映射成Ids属性

4. 将行映射成对象

活动记录和其它的ORM框架最大的区别是它们的映射方式不同。大多数流行的ORM框架(如Hibernate) 是以XML作为映射容器。而活动记录采用的是更容易使用的"约定"方式进行映射。下面让我们来看看活动 记录是如何做的。

Ruby on Rails的活动记录纵览(2)

时间:2011-11-09 天极 李宁

将表映射成类

为了将表映射成类,Ruby类必须从ActiveRecord::Base继承。这个Base类在ActiveRecord包中。那么 一个类从ActiveRecord::Base继承后发生了什么呢?实际上这个子类已经和一个数据表相对应了。也许大 家看到这有一些迷糊,我除了写一个从ActiveRecord::Base继承的空类什么代码都没写,怎么就映射完了 。其实这要依靠活动记录的命名约定。活动记录假设一个类名的复数形式(英文类名)就是表名。如果类 名中有多个大写字母,那么活动记录就假设表名就是这些单词中间用下划线隔开后连在一起,请看下面的 例子。

类名 表名
Record Records
LineItem Line_Items
Datum Data

以上所描述的是活动记录的默认的映射行为,我们也可以为活动记录定义自已的行为。要改变这些默 认的行为,可以按以下步骤做:

1.将全局变量ActiveRecord::Base. pluralize_table_names设为false。这个变量被定义在config目 录中的environment.rb中。

2.可以通过set_table_na

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号