16 数据库基础之使用ActiveRecord进行数据库操作
在前一篇文章中,我们讨论了如何生成数据库迁移,以便创建和修改数据库结构。现在,我们将深入了解如何使用ActiveRecord与数据库进行交互。ActiveRecord是Rails的ORM(对象关系映射)工具,使我们能够通过Ruby代码与数据库进行交互,而不必编写原始的SQL查询。
ActiveRecord简介
ActiveRecord提供了一种简单而强大的方式来操作数据库。每个数据库表对应一个ActiveRecord模型,模型的实例对应表中的一行记录。你可以使用模型来创建、读取、更新和删除记录,这些操作统称为CRUD操作。
创建新记录
要在数据库中创建一条新的记录,你可以使用create
方法。假设我们有一个User
模型,它对应于users
表,你可以像下面这样创建一个新用户:
1 | # app/models/user.rb |
这个示例中,我们调用了User.create
方法,传入一个包含name
和email
的哈希。ActiveRecord会自动将这些信息插入到数据库中。
查询记录
ActiveRecord提供了多种查询数据库记录的方法。最常用的是all
、find
和where
。
查询所有记录
1 | # 查询所有用户 |
查询特定记录
1 | # 按ID查询特定用户 |
条件查询
1 | # 查询所有邮箱以@example.com结尾的用户 |
更新记录
一旦你找到一个记录,你可以直接修改它的属性,然后调用save
方法保存变化。例如:
1 | user = User.find(1) |
或者更简洁地使用update
方法:
1 | user.update(name: "Bob") |
删除记录
要删除一条记录,你可以使用destroy
方法:
1 | user = User.find(1) |
ActiveRecord回调
ActiveRecord支持多种回调,这些回调允许你在创建、更新或删除记录时添加自定义逻辑。例如,你可以在创建用户之前确保所有用户的电子邮件都是唯一的:
1 | class User < ApplicationRecord |
批量操作
对于需要一次性插入多个记录的场景,ActiveRecord提供了import
方法。假设我们有一个Product
模型,可以这样批量创建产品:
1 | products = [ |
小结
在本章节中,我们学习了如何使用ActiveRecord与数据库交互,执行常见的CRUD操作,并了解了如何使用回调和批量操作。ActiveRecord的强大之处在于它提供了一种简洁且优雅的方式来处理数据库操作,而不需要编写繁琐的SQL。
在下一章节中,我们将探索RESTful路由与理解RESTful架构,这将帮助我们在Rails应用中更好地组织资源和控制器,进一步提升我们的全栈开发能力。
16 数据库基础之使用ActiveRecord进行数据库操作