您的位置:首页 > 编程语言 > Ruby

ruby中的CRUD以及数据的组织形式

2009-10-08 19:53 274 查看
1CRUD


C: .save
.create()

R:
find(:first)
查询第一条

find(:all, conditions=>”name=’

’ and pay_type=’

’”)
给定属性查询

通过
hash

集合给定属性值



name=params[:name]

pay_type=params[:pay_type]

find(:all, conditions=>[“name=:name and pay_type=:pay_type”,

{:pay_type=>pay_type,
:name=>name}])

通过
hash

参数给定属性值



find(:all,
conditions=>params[:order])

find

方法实为对
sql

语句的转换



:conditions

=>”name=’Dave’”

给定的是
sql
语句中
where
的查询条件

:order

=>”pay_type,shipped_at
DESC”

指定排序的条件

:limit

=>”10”

指定限制返回的记录数。与
:order
参数同时使用时,返回查询结果保持一致

:offset=>”20”


指定查询数据中的第几条记录之后被读取出来

:select=>

”name,pay_type”

指定要查询的内容字段

:redonly=>true


Find
方法返回的
ActiveRecord
对象不能存回数据库

:from=>

表名



:group=>

”shu”
以书来分组

注:通过分组查询出来的数据是数组型并非
Hash

型的





U


update_attribute(:

属性名,“值”
)


2

获取字段统计信息



Order.average(:
字段名称
)

计算
order

数据中给定字段的平均值



Order.maximum(:
字段名称
)

计算
order

中给定字段的最大值



Order.minimum(:
字段名称
)

计算
order

中给定字段的最小值



Order.sum(:
字段名称
)

计算
order

中给定字段的和



Order.count

计算
order

中数据的总数



所有这些函数与
find

函数类似接受
hash

参数



:conditions


:limit


:order


:having


:select


:distinct


:group (group

常与
limit


order

一同使用
)


3

对于结构化数据的存取



若将对象中的一对象属性(如数组对象)保存入数据库为某种类型的(多数为字符串行或
text
型)

当在模型中声明
serialize
:字段名时,取出数据时仍保持存前数据的类型

如将字符串存入数据库则以
string
形式存储,取出时仍然是个数组

注:数组对象以
YAML
格式存入数据库,若在
ruby
应用外使用则,则不能解析此格式

4

对象聚合的存取



1
首先建立对象内的聚合类:必须满足有一个构造器,该类不能继承
ActiveRecord(
属性应该以
attr_accessor :……)
,参数必须对应数据库字段

2
在外层对象上建立钩子:该钩子建立与内层对象的关系,及内层对象与数据库的映射关系
composed_of :attr_name


:class_name=>Name

:mapping=>[[:first_name,:first],[:
表字段,对象字段
]

[]……]

注意:参数
:attr_name
代表的是聚合对象作为外层对象的属性名(必须有)

:class_name
代表聚合对象的类名(如果外层对象属性与聚合类名相同则无需此参数)

:mapping
当数据库字段与聚合类名不一样时使用此参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: