version: rails 4
CRUD是四个动作的缩写, 我们用来操作数据: 创建(Create), 查询(Read), 更新(Update)和删除(Delete). Active Record自动创建方法, 允许一个应用来查询和操作已被保存在数据表中的数据.
5.1 Create 创建
Active Record 对象能够从一个哈希队列, 一个代码库中被创建, 或者在创建之后手工地设置他们的特性. new方法会返回一个新的对象, 而当create 返回的对象会被保存到数据库中.
例如, 有一个模型 User, 它的特性是name 和 occupation, 方法create
的调用会被创建和保存一条新的记录到数据库中.
user = User.create(name:
"David"
, occupation:
"Code Artist"
)
|
使用方法new, 一个对象能够被初始化, 而没有被保存:
user = User.
new
user.name =
"David"
user.occupation =
"Code Artist"
|
对于user.save的调用将会提交记录到数据库中.
最后, 如果有一个代码块, 主要用来初始化, create和new都会创建一个新的对象.
user = User.
new
do
|u|
u.name =
"David"
u.occupation =
"Code Artist"
end
|
5.2 Read 查询
Active Record 提供了许多的API用来从数据库中读取数据. 下文是一些不同数据读取方法的例子, 都是由 Active Record 提供的.
# return a collection with all users
users = User.all
|
# return the first user
user = User.first
|
# return the first user named David
david = User.find_by(name:
'David'
)
|
# find all users named David who are Code Artists and sort by created_at in reverse chronological order
users = User.where(name:
'David'
, occupation:
'Code Artist'
).order(
'created_at DESC'
)
|
你可以学到更到的查询一个Active Record 模型, 参考 Active Record Query Interface
5.3 Update 更新
一旦一个 Active Record 对象被重新检索到, 它的属性能够被修改, 以及它能够被保存到数据库中.
user = User.find_by(name:
'David'
)
user.name =
'Dave'
user.save
|
用一个哈希映射特性的名称对应于期望的值有一个快捷的实现, 类似于下文:
user = User.find_by(name:
'David'
)
user.update(name:
'Dave'
)
|
这个相当的有用, 当需要马上更新一些特性的时候. 也就是说, 如果你想要在一个代码块中更新多条记录,你可能会发现类中的update_all 方法非常有用:
User.update_all
"max_login_attempts = 3, must_change_password = 'true'"
|
5.4 Delete 删除
同样的,被接收到的一个Active Record 对象能够被销毁,也就是从数据库中删除它。
user = User.find_by(name:
'David'
)
user.destroy
|