您的位置:首页 > 其它

Active Record 基础

2016-06-02 16:40 190 查看

1. Active Record

1.1 Active Record模式

在Active Record模式中,对象中既有持久储存在database中的数据,也有针对数据的操作。Active Record模式把数据存储逻辑作为对象的一部分,处理对象的用户知道如何把数据写入database,以及从database中读出数据。


1.2 ORM: Object-Relational Mapping对象关系映射

ORM是一种技术手段,把应用程序中的*对象*和**关系型数据库管理系统**(RDBMS:Relational Database Management System)的*表单*联系起来。通过ORM,应用程序中的对象的属性和关系能直接从database中存储或获取,而不用通过SQL语句。


1.3 Active Record作为ORM的框架

-表示model与其data
-表示models之间的关系
-表示相关models之间的继承结构
-在存入database之前,验证models
-用面向对象的方法操作database


2. Active Record中的“多约定少配置”原则( Convention over Configuration)

2.1 naming conventions

Rails通过把model类名转换成复数,来查找对应的数据表。例:model类为Book,对应的数据表就是books。

-数据表(database table):复数,下划线分割单词(例:book_clubs)

-模型类名(model class):单数,每个单词首字母大写(例:BookClub)

2.2 schema convention(模式约定)

Active Record对数据表的列属性也做了相应的命名约定

-外键(foreign keys):使用singularized_table_name_id形式命名,例:item_id, order_id。创建model**关联**后,Active Record会查找该列属性。

-主键(primary keys):Active Record将一个列名为“id”的数字列作为数据表的主键,当使用Active Record Migrations来创建表单后,这一列将会被自动创建。

3 创建Active Record Models

4 不使用约定命名(待)

5 CRUD:读写数据

5.1 Create

例:User模型类有两个属性:name和occupation,调用create方法将实例化一个对象,并把该对象对应的记录存入数据库中:

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


使用new方法可以实例化一个对象,但不会保存。调用user.save可以把记录保存入数据库:

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


5.2 Read

# 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')


5.3 Update

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


5.4 Delete

user = User.find_by(name: 'David')
user.destroy


6 Validation数据验证

把数据存入数据库前需要进行验证,所以调用create,save,update这三个方法时会做数据验证,验证失败则返回false,数据库不做修改。

7 Callbacks回调

回调允许在模型生命周期里绑定代码到特定事件,当事件发生时,将执行这些代码。

8 Migrations数据迁移

Rails提供一种DSL(domain-specific language)语言来管理数据库的模式(schema)。

Rails记录哪些文件被应用到数据库,并提供了回滚(rollback)功能。

创建数据库表单时候,运行:

rake db:migrate


撤销时运行:

rake db:rollback
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: