侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

Rails 学习笔记 01:Active Record 基础

barwe
2021-09-14 / 0 评论 / 0 点赞 / 600 阅读 / 1,418 字
温馨提示:
本文最后更新于 2022-07-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Active Record 基础

Active Record 是什么

Active Record模型,负责创建和使用需要持久存入数据库中的数据,是一种ORM(对象关系映射)。

在ORM中,模型对应着数据表,对象或者实例对应着数据表的每一个记录,记录的每个字段对应着对象的一个属性

对象除了拥有与数据表中字段相关联的属性外,还可以定义额外的计算属性或者方法

对象的属性除了存储基本类型的值外,还可以指向其他模型的实例,即存储数据表之间的关联关系。

Active Record 中的“多约定,少配置”原则

命名约定

模型(类)名称例如LineItem,对应的数据表(模式)名称默认为line_items

模式约定

数据表有不同功能的字段:

  • 表示对象固有属性的基本字段
  • 主键:默认使用id作为数据表的主键
  • 外键:表示该对象属于另一个对象,默认为**[下划线分隔的小写单数表名称]_id**,例如other_table_name_id

模型的其他可选字段:

  • 时间戳:created_at & updated_at
  • 乐观锁:lock_version
  • 单表继承:type
  • 多态关联:[associate_name]_type
  • 关联对象数量的缓存:[table_name]_count

创建 Active Record 模型

继承ActiveRecord::Base类,继承符号是<,例如

class Product < ActiveRecord::Base
end

之后,数据表products上的字段会自动映射到模型Product的属性上。

不用默认的命名约定

指定数据表的主键:

class Product < ActiveRecord::Base
    self.primary_key = "product_id"
end

其他略

CURD:读写数据

创建

使用类方法create实例化一个对象,并自动存入数据库:

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

使用类方法new实例化一个对象,然后使用实例方法save存入数据库:

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

user.new do |user|
    user.name = "David"
	user.occupation = "Code Artist"
end

user.save

读取

此处略,参考 Active Record 查询。

更新

直接修改属性,调用save方法存入数据库:

user.name = "barwe"
user.save

使用update一次更新多个属性:

user.update(name: "barwe", occupation: "student")

使用类方法update_all一次更新多条记录的多个属性,用法略。

删除

调用实例方法destroy销毁对象。

数据验证

略。

回调

声明模型时,为特定事件绑定回调函数。此处略。

迁移

使用rake db:migrate执行,使用rake db:rollback回滚。

参考

https://ruby-china.github.io/rails-guides/v4.1/active_record_basics.html

0

评论区