赵龙 全栈之路

Rails Guides 中的 CRUD

| Comments

CRUD:读写数据

示例

u = User.first

= 左边的代码是被赋值的对象(按需求更改),右边的代码才是真正执行的代码(不可出错)。

在 ruby 中,简单指令可以省略 () ,例如,User.find 1 等价 User.find(1)

在编程中,散列表 也被称谓 哈希表

在终端操作中,ruby 中不同语句可以通过符号 . 连接起来,例如: User.new ,User.find(1).destroy

Create.创建

user = User.create(name: "David", occupation: "Code Artist")

代码 User.create 表示从 User 模型调取,第一个字母必须大写,代码 name: "David", 表示 属性名: "保存记录", 一次性保存多条记录使用 , 隔开。

user = User.new
user.name = "David"
user.occupation = "Code Artist"
user.save

User.create 直接储存到数据库,User.new 必须执行 user.save 指令后,才储存到数据库(user可设定)。

Read.读取

# 返回所有用户组成的集合
users = User.all

# 返回第一个用户
user = User.first #还可以使用 second、last等。

# 返回 id = 3 的用户
user = User.find 3

# 返回第一个名为 David 的用户
david = User.find_by(name: 'David')

# 查找所有名为 David,职业为 Code Artists 的用户,而且按照 created_at 反向排列
users = User.where(name: 'David', occupation: 'Code Artist').order(created_at: :desc)

find id 方法适合已知 id 快速查询 ,find_by(...) 适合数据库字段查询。

Update.更新

通过查询语句检索到 Active Record 对象后,使用赋值符号 = 修改其属性,再使用 save 再将其存入数据库。

user = User.find_by(name: 'David')
user.name = 'Dave'
user.save

使用散列的简写方式,指定属性名和属性值,可以直接保存到数据库,适合一次更新多个属性。例如:

user = User.find_by(name: 'David')
user.update(name: 'Dave', occupation: 'Code Artist')

如果想批量更新多个记录,可以使用类方法 update_all ,

User.update_all "max_login_attempts = 3, must_change_password = 'true'"

Delete.删除

检索到 Active Record 对象后还可以将其销毁,从数据库中删除。

# 删除用户名为 David 的用户
user = User.find_by(name: 'David')
user.destroy

# 删除整个 User 数据表
User.destroy_all

慎用 destroy_all 指令,将在数据库中删除全部 User 数据。

Comments

comments powered by Disqus