• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby on rails开发从头来(三十八)- ActiveRecord基础(列和属性) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  ActiveRecord中的一个对象相当于数据库中表的一行,对象的属性对应于表的列,也许你会注意到我们的Order类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,Active Record将数据库中的模式反应到类中。

我们的orders表可能使用下面的sql来创建:

create table orders (

id int not null auto_increment,

name varchar(100) not null,

email varchar(255) not null,

address text not null,

pay_type char(10) not null,

shipped_at datetime null,

primary key (id)

);

我们可以创建一个类来转换这个表:

require 'rubygems'

require_gem 'activerecord'

# Connection code omitted...

class Order < ActiveRecord::Base

end

当我们创建了Order类,就可以访问它的属性来获取信息,下面的代码使用columns()方法,来返回一个Columns对象的数组,在这里,我们显示了orders表中的每个列,并且显示指定字段的详细信息。

require 'pp'

pp Order.columns.map { |col| col.name }

pp Order.columns_hash['shipped_at']

运行代码,会得到下面的输出:

["id", "name", "email", "address", "pay_type", "shipped_at"]

#<ActiveRecord::ConnectionAdapters::Column:0x10e4a50

@default=nil,

@limit=nil,

@name="shipped_at",

@type=:datetime>

注意,Active Record决定了每个列的类型,在这个例子里,将shipped_at列作为datetime类型,该列的值被保存在一个rubyTime类型的对象中,我们可以写些代码来验证该列的类型及其内容:

order = Order.new

order.shipped_at = "2005-03-04 12:34"

pp order.shipped_at.class

pp order.shipped_at

输出为:

Time

Fri Mar 04 12:34:00 CST 2005

下面的列表展示了sqlruby间的数据类型对应关系:

SQLType            Ruby Class      SQLType                  Ruby Class

int, integer       Fixnum           float, double           Float

decimal, numeric   Float            char, varchar, string   String

clob, blob, text   String           datetime, time          Time

interval, date     Date             Boolean                 后面详细介绍

 

有一个潜在的可能是关于decimal的,在数据库里,使用decimal的列来存储numberfix number型,Active Recorddecimal映射成Float类的对象,尽管这样可以应用于大多数应用,浮点数是不精确的,在对这一类型的属性进行一系列操作的时候,可能会发生舍入的错误,你也许可以使用integer类型来作为替代方案,例如,存储货币型的时候可以将元,角,分,分别存入不同的字段。做为一种选择,你可以使用聚合(aggregations),使用多个分开的字段来构建货币类型。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby新建web项目步骤,使用mysql数据库发布时间:2022-07-14
下一篇:
飞翔的宝石:南美蜂鸟和Ruby编程语言发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap