所谓Active Record就是指MVC模型中的M, 即model。它的主要功能:
- 表示模型和他的数据
- 表示模型间的关系
- 表示模型间的继承关系
- 在模型与数据库同步前检验模型
- 面向对象的方式操作数据库
命名规则变化:
rails 将你的model名字复数化,这就是你数据库中表的名字啦。假如你的model名为Book,那么表的名字就是books了,它的复数化不仅仅是加个s那么简单,它会真的像英语里面的复数一样的。
Model / Class | Table / Schema |
---|---|
Post | posts |
LineItem | line_items |
Deer | deer |
Mouse | mice |
Person | people |
创建一个Active Record ,很简单,只要你是ActiveRecord::Base的子类即可
CRUD
(这只是Create,Read,Update,Delete的简称)下面我们一个一个的讲
Create:
这里首先要搞清楚的是,create相当与执行了new 和 save,假如用new,要记得save
user = User.create(name:
"David"
, occupation:
"Code Artist"
)
一个一个解释,user是我们的创建的模型名字,而User是我们model 类的名字(rails 命名是很有讲究的,这个可以google下,很有意思,其实也很很简单,你就按照人类的思想来想命名就ok了),而name,occupation是User这个model中的数据名字(也就是列,id这个primary key是自动的,不用管)。也可以先User.new 然后再一个个的指定。
Read:
这里面有很多很多API
1. User.all, 返回所有的记录
2. User.first,返回第一条记录
3. User.find_by_name("David"),返回name列为David的第一条记录,这里的name是列名,也就是model中的数据名,是可以被替换的
3. User.where
(name:
'David'
, occupation:
'Code Artist'
).order(
'created_at DESC'
),find all users named David who are Code Artists and sort by created_at in reverse chronological order
Update
有三种办法
1. 先找到,比如user = User.find_by_name("David"), user.name = "da", user.save这样就ok了
2. 先找到,比如user = User.find_by_name("David"),
user.update(name:
'Dave'
)这样也ok
3.上面的那些只是修改一个记录,假如你想修改所有的符合要求的数据,你用update_all比较好
Delete
先找到,比如user = User.find_by_name("David"),然后user.destroy,ok