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
当数据库字段与聚合类名不一样时使用此参数
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
当数据库字段与聚合类名不一样时使用此参数
相关文章推荐
- Linux学习(CentOS-7)---磁盘数据的内容和组织形式
- Mapinfo空间数据组织形式及Mapx开发技巧
- 根据传入的数据绘制圆环,以及以绘画形式自定义图片为圆形
- 验证管道的容量以及管道的组织形式
- 地理信息系统矢量数据的组织形式 第二章:数字表面模型
- Mapinfo空间数据组织形式及Mapx开发技巧
- highchart的几种数据组织形式
- [置顶] 地理信息系统矢量数据的组织形式 第一章:二维空间对象数据模型
- can_frame中can_id的数据组织形式及处理
- 网络传输中,对Json组织方式的数据的解析以及使用这个方法,模拟从服务器端下载数据
- 说明链表和数组作为数据的不同组织形式,各自的优缺点。
- 数据结构四:栈的两种形式LinkStack和SeqStack用线性表的实现方式,以及SeqQueue和LinkQueue的实现
- jquery将数据以table的形式显示,实现数据统计,分页,以及动态添加,搜索
- iOS开发之"省市"二级联动的数据组织(PHP版)以及PickerView的实现与封装
- 回顾:字符数据在内存中的存储形式以及其使用方法
- 数据文件的组织形式
- hibernate的数据状态以及session的CRUD方法
- 架构组织形式的讨论,以及架构师之路的建议
- 从网络上面获得html数据以及 handler Message的使用形式
- Web开发中AJax的书写形式以及取返回数据的方法