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 当数据库字段与聚合类名不一样时使用此参数