快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
me改变默认的表名。例如,如果将表Orders映射成类Order的代码如下:

class Order < ActiveRecord::Base
end

但如果这个类名要映射成MyOrder,那么它的实现代码如下:

class Order <ActiveRecord::Base
set_table_name "MyOrder"
end

接下来让我们看看如何将字段映射成属性。

将字段转换为属性

在一个数据表被映射成类后,表中的字段就将自动映射成类的属性。这是因为活动记录是在程序运行 时动态地将表中的字段映射成类的属性。事实上,在从ActiveRecord::Base的类自动将表中的字段包装在 了类中。下表将描述SQL数据类型将被映射成Ruby的哪些数据类型:

SQL数据类型 Ruby数据类型(类)
int, integer Fixnum
decimal, numeric Float
interval, date Date
clob, blob, text String
float, double float
chat, varchar, string String
datetime, time Time

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

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

下面让我们来讨论主键的映射。

将主键映射成Ids

假设有一个Orders表,它的主键是Order_Id。现在让我们看看这个Order_Id字段,这个字段由16个数 字组成,其中包括Item id,User Id等。在以后如果Order_id变成20位数字,最后4位数字是一个RFID代 码,那么所有依赖这个Order_id字段的列都将发生变化。这些工作量是非常大的,即使这个应用程序并不 大。然而活动记录确能自动做到这些。自动映射可按如下代码去做:

class Order < ActiveRecord::Base
set_primary_key "orderId"
end

将记录映射成对象

无论什么时候,映射类的查询方法被执行时,在内部都会调用相应的SQL语句来查询数据库,并且将查 询结果返回,这些返回的结果最终以对象的形式表现。列值将成为对象的属性。返回的每一行将被映射成 一个对象。例如以下代码将返回Id等于100的Order对象:

an_order = Order.find(100)

上面的代码演示了如何得到特定的记录。接下来让我们看一下使用活动记录建立相应的操作的步骤。

使用活动记录的步骤

虽然使用活动记录映射数据表不需要复杂的设置,但我们必须按着活动记录所制定的规范进行操作。 这些规范将成为活动记录工作的一部分,以下就是使用活动记录的步骤。

1.建立表

2.连接数据库

3.建立ORM

4.进行增、删、改操作

第一步需要完全按着规范来做。建立表的过程一定要严格按着规范进行,否则就会覆盖活动记录的默 认值。以下是建立表的详细过程:

·建立表

如果你不想在映射时做大量的工作,那么数据表必须按着活动记录所制定的规范来建立。过程如下:

1.表名应该是复制形式(如orders)。

2.主键应该被命名为Id,它的数据类型应该是整型。

如果某个表引用了另外一个表,那么这个表的外键应该按如下格式取名:

<表名的单数形式>_id

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

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

因此,按着上面两条规范建立orders表的SQL语句(MySQL数据库)如下:

create table orders (
 id int not null auto_increment,
 name varchar(50) not null,
 … …
 primary key (id)
);

·连接数据库

就象RoR的其它操作一样,数据库的连接也是非常快速的。这就意味着活动记录在内部做了很多的工作 ,如自动侦测特定的数据库适配器的细节。为了连接数据库

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号